cha*_*r m 23 c# asp.net multithreading
我正在创建asmx Web服务,并且必须创建线程来执行后台IO来刷新系统数据.什么是正确的方法?我对创建线程没有任何结果感兴趣.我只是希望ASP.NET工作线程创建一个执行它加载的线程,最后进行一次分配(我认为分配_alldata = newData是原子,我自己的大结构类SystemData的两个实例)所以创建的工作线程新线程可以立即传播.
我读了一篇文章http://msdn.microsoft.com/fi-fi/magazine/cc164128%28en-us%29.aspx#S2,建议使用非线程池线程.然而,文章是关于不同/更复杂的情况,并没有帮助我这么多.
谢谢:马蒂
PS.我也问过这个问题,在asmx web服务中为数据库IO生成线程的正确方法是什么?但这个问题太复杂了.
Ric*_*kNZ 30
像这样的东西:
public delegate void Worker();
private static Thread worker;
public static void Init(Worker work)
{
worker = new Thread(new ThreadStart(work));
worker.Start();
}
public static void Work()
{
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
然后通过调用开始Init(Work)
.
如果您调用BeginInvoke()
或者ThreadPool.QueueUserWorkItem()
它使用ASP.NET线程池线程,这可能会影响应用程序的可伸缩性.
如果它有用,我会在本书中详细介绍这些问题,以及代码示例,示例基准测试等:Ultra-Fast ASP.NET.
看一眼:
你可以这样做:
public delegate void MethodInvoker();
private void Foo()
{
// sleep for 10 seconds.
Thread.Sleep(10000);
}
protected void Button2_Click(object sender, EventArgs e)
{
// create a delegate of MethodInvoker poiting to
// our Foo function.
MethodInvoker simpleDelegate = new MethodInvoker(Foo);
// Calling Foo Async
simpleDelegate.BeginInvoke(null, null);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
58030 次 |
最近记录: |