Pat*_*ley 29 c# asynchronous async-await
我的方法是不在异步操作中使用静态方法和类 - 除非实现一些锁定技术来防止竞争条件.
现在async/await已经引入到c#4.5+框架中 - 这简化了多线程应用程序并鼓励响应式UI.
但是 - 因为锁不能/不应该放在等待方法上(我不是在辩论)现在是否会使静态方法利用async/await完全冗余?
Jon*_*eet 49
我的方法是不在异步操作中使用静态方法和类 - 除非实现一些锁定技术来防止竞争条件.
为什么?除非您实际使用共享状态,否则不应存在任何竞争条件.例如,考虑:
public static async Task<int> GetPageLength(string url)
{
string text = await new WebClient().DownloadStringTaskAsync(url);
return text.Length;
}
Run Code Online (Sandbox Code Playgroud)
如果您确实有共享状态 - 或者如果您在多个线程使用的实例上使用实例方法 - 则需要确定理想情况下您希望异步操作如何工作.一旦你决定了各种种族应该如何表现,实际上实现它可能相当简单.