异步方法调用期间的主线程完成?

时间:2011-08-10 12:31:45

标签: c# .net multithreading asynchronous

只是想知道,在主线程不需要等待异步方法调用完成的情况下,是否有必要以编程方式创建新线程?

在这种情况下,在将一些数据保存到数据库时会进行异步调用,但这是调用方法的第二件事(最后一件事是返回数据)。所以等待似乎毫无意义(特别是因为其他一些方法正在等待返回数据),但是如果调用方法在调用之后立即完成,则async方法可能根本无法正常执行。

在这种情况下,最佳做法是什么?我现在必须使用.NET 3.5。

1 个答案:

答案 0 :(得分:1)

这是唯一一个问题是“调用方法”是应用程序入口点(又名Main()),并且进程本身终止。在这种情况下,设计您的API,以便您可以选择等待完成,如果您需要 - 这可以是直接的(具有允许等待的返回对象),或间接(提供设置a的回调) ManualResetEvent或类似的。)

根据定义,异步方法调用已经涉及另一个线程,因此您不需要复制它(事实上,不应该)。但是,您应该确保调用任何必要的“结束*” - 通常是通过回调。