如果我不调用End ...方法,线程会发生什么?

时间:2013-06-07 13:42:41

标签: .net asynchronous webservice-client

我有一个带有生成的异步方法的Web服务引用代理类。我使用BeginMethodName调用方法。我可以传递一个回调函数,然后在回调函数中调用EndMethodName来获取结果或异常。但是如果我不调用EndMethodName,并行线程会发生什么?我试图使用调试器监视应用程序,看起来这些线程会被杀死。但这可能是由于他们的主线程被杀死了。但是如果主线程不会被杀死怎么办?那些并行代理线程会被某些超时杀死吗?我不需要知道方法调用的结果,方法调用是OneWay的任何方式。

1 个答案:

答案 0 :(得分:1)

当一个线程完成执行时,它将自行关闭。

“一旦启动线程,就没有必要保留对Thread对象的引用。线程继续执行,直到线程程序完成。” - MSDN

此外,如果它是后台线程,那么只要主线程被终止,它就会突然关闭。如果它是前台线程,那么应用程序将等到前台线程完成后再关闭。

默认情况下,线程是前台。如果你想确保在主线程被杀死时线程关闭,那么设置IsBackground property = true。