0
目前我正在写一个小型网络服务器,并为服务器获取的每个请求创建一个新的线程。 基本上是这样的:如何在线程中封装一个方法?
public class MyController
{
public void ProcessRequest(object contextObject)
{
HttpListenerContext context = (HttpListenerContext)contextObject;
// handle request
if (someCondition())
{
context.Response.StatusCode = 400;
context.Response.StatusDescription = "Missing something";
}
else
{
context.Response.StatusCode = 200;
context.Response.StatusDescription = "Everything OK";
}
}
public void AcceptRequest()
{
while (true)
{
HttpListenerContext context = HttpListener.GetContext();
Thread thread = new Thread(this.ProcessRequest);
thread.Start(context);
}
}
}
我试图让我的例子很简单。很明显,在我的应用程序中,它有点复杂。 现在我尝试封装if-else-directive中发生的事情。我想到的方法等:
public void EncapsulateMe(int code, string description)
{
context.Response.StatusCode = code;
context.Response.StatusDescription = description;
}
的问题是,我需要太转移上下文对象,但我不知道该怎么办呢线程安全的,这将是最好的方式。我想过创建一个从Thread派生的新类,并实现了ProcessRequest方法和新的EncapsulateMe方法。这会对我想要完成的事情复杂吗?
编辑:我刚刚发现,它不可能写在c#中的类从Thread
派生,因为这个类是密封的...有没有什么办法在c#中创建自己的线程? 我只知道这个从Java,所以我有点糊涂了,这不是在C#中可能...