启动新线程 - 我是否需要关心垃圾收集

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()

Jim*_*hel 8

没有特别的原因需要跟踪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)