如何中止在另一个函数内启动的线程?

vis*_*hnu 3 c# multithreading

Monitor moni = new Monitor();
Thread t = new Thread(() => moni.CurrUsage(nics,200));
t.Start();
Run Code Online (Sandbox Code Playgroud)

我在'Form1_Load'函数中启动一个名为't'的线程.我添加了一个按钮.单击该按钮时,线程't'应停止执行并使用这些参数创建新线程.

Monitor moni = new Monitor();
Thread t = new Thread(() => moni.CurrUsage(nics,950));
t.Start();
Run Code Online (Sandbox Code Playgroud)

我知道在form_load事件中我可以使用

t.Abort();
Run Code Online (Sandbox Code Playgroud)

Jos*_*aum 5

通过创建t表单的成员,您可以稍后在按钮单击事件处理程序中引用它.

优雅的中止. 虽然t.Abort()完成了工作,但您可能会在线程中留下半处理数据t.您可以捕获ThreadAbortExceptionin线程t以优雅地结束处理.

注意重叠. 第二个问题是,当你的新线程已经启动时,你的线程可能还没有中止.您可以防止通过调用t.Join()调用之后t.Abort().

希望这可以帮助.