只是想知道,在主线程不需要等待异步方法调用完成的情况下,是否有必要以编程方式创建新线程?
在这种情况下,在将一些数据保存到数据库时会进行异步调用,但这是调用方法的第二件事(最后一件事是返回数据)。所以等待似乎毫无意义(特别是因为其他一些方法正在等待返回数据),但是如果调用方法在调用之后立即完成,则async方法可能根本无法正常执行。
在这种情况下,最佳做法是什么?我现在必须使用.NET 3.5。
答案 0 :(得分:1)
这是唯一一个问题是“调用方法”是应用程序入口点(又名Main()
),并且进程本身终止。在这种情况下,设计您的API,以便您可以选择等待完成,如果您需要 - 这可以是直接的(具有允许等待的返回对象),或间接(提供设置a的回调) ManualResetEvent
或类似的。)
根据定义,异步方法调用已经涉及另一个线程,因此您不需要复制它(事实上,不应该)。但是,您应该确保调用任何必要的“结束*” - 通常是通过回调。