Bre*_*ett 42 c# multithreading
我正在寻找一种方法来调用新线程上的方法(使用C#).
例如,我想呼吁SecondFoo()一个新的线程.但是,我希望在SecondFoo()完成时终止该线程.
我已经看到了几个线程的例子C#,但没有一个适用于我需要生成的线程终止自身的特定场景.这可能吗?
如何强制生成的线程Secondfoo()在完成后终止运行?
有没有人遇到过这方面的例子?
Jon*_*eet 85
如果您实际启动了一个新线程,该方法将在方法完成时终止:
Thread thread = new Thread(SecondFoo);
thread.Start();
Run Code Online (Sandbox Code Playgroud)
现在SecondFoo将在新线程中调用,线程将在完成时终止.
你是否真的意味着你想让线程在调用线程中的方法完成时终止?
编辑:请注意,启动一个线程是一个相当昂贵的操作.你肯定需要一个全新的线程而不是使用线程池线程吗?考虑使用ThreadPool.QueueUserWorkItem或(最好是,如果您使用的是.NET 4)TaskFactory.StartNew.
Ron*_*ijm 58
它真的必须是一个线程,还是一个任务呢?
如果是这样,最简单的方法是:
Task.Factory.StartNew(() => SecondFoo())
Run Code Online (Sandbox Code Playgroud)
在.Net线程由线程池管理,所以你可以启动它并忘记它!考虑这段代码.
new Thread(new ThreadStart(SecondFoo)).Start();
Run Code Online (Sandbox Code Playgroud)
异步版本:
private async Task DoAsync()
{
await Task.Run(async () =>
{
//Do something awaitable here
});
}
Run Code Online (Sandbox Code Playgroud)