8 .net c# multithreading garbage-collection
我有点大脑冻结,所以我想我会把它扔给SO的集体天才......
我有一个事件被引发(这将在"提升者"的线程上)并且我消耗它.
但是,一旦我处理此事件,我需要触发另一个线程来执行事件所表示的工作负载.所以,我正在使用:
private void MyEventHandler(object sender, EventArgs e)
{
Thread t = new Thread(new ThreadStart(MyHandler));
t.Start();
}
private void MyHandler()
{
DoStuff(); // takes a long time
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:我是否需要关注变量的生命周期t
?即可以t
进行垃圾收集,从而中止正在进行的工作DoStuff()
?
没有特别的原因需要跟踪Thread变量.t
超出范围时,GC不会终止该线程.
我不知道"很长一段时间"有多久,但你可能最好使用像ThreadPool.QueueUserWorkItem这样的东西.那是:
private void MyEventHandler(object sender, EventArgs e)
{
ThreadPool.QueueUserWorkItem(MyHandler);
}
private void MyHandler(object state)
{
DoStuff();
}
Run Code Online (Sandbox Code Playgroud)