小编Int*_*ary的帖子

异步和等待 - 控制台,Windows窗体和ASP.NET之间的区别

我一直在教自己异步/等待使用,我想我理解了引擎盖下的概念.但是,在async/await上的大多数Channel 9教程,MSDN文章和Stack溢出答案都使用基于GUI的应用程序(Windows Forms应用程序)来演示async/await的强大功能.

但是,我注意到基于UI线程的应用程序与常规ThreadPool基于线程的应用程序(例如ASP.NET Web应用程序,控制台应用程序等)中async/await使用的根本区别.

因为,在基于UI线程的应用程序中,UI线程始终可用(除非进程显式或由Windows停止),因此负责在任何异步方法中"等待"之后执行代码的ThreadPool线程将保证找到UI线程将结果发回(如果有的话).

但是,在控制台应用程序或ASP.NET Web应用程序中,主线程(在控制台应用程序中)或HTTP请求(在ASP.NET Web应用程序中)必须等待(在一个时间点),直到所有异步操作都是完成.所以在Async方法调用之后应该有.Wait()和.Result调用,如果没有其他工作可以处理的话.

这种理解是否正确?我并没有质疑对I/O绑定或网络绑定操作进行异步的好处(我理解它将如何提高应用程序的可伸缩性).

.net c# asynchronous async-await

8
推荐指数
1
解决办法
2350
查看次数

什么是.NET汇编文化?

在网站上搜索后,我发布了这个问题.我知道默认程序集是"文化中立"的,并且可以创建仅包含具有文化特定信息的资源(而不是代码)的附属程序集,并将它们放在与文化名称相同的文件夹中(即en-us) .但问题是,什么是文化?一些特定的现实例子会有所帮助.

culture satellite .net-assembly

6
推荐指数
1
解决办法
9076
查看次数

将同步API包装到Async方法中

我的MVC应用程序使用库,此库的一些方法在内部调用WCF服务.从此DLL公开的所有方法都是同步的(它们都没有返回任务或任务),因为我们不拥有该程序集,所以无法将它们转换为异步API.

但是,因为这些方法调用WCF服务,所以它们是网络绑定的(因此理想情况下它们应该是异步的).

我想在我的MVC应用程序中使用异步控制器操作,以使其更具可伸缩性.我的问题是当一个方法本质上是同步时,如何使整个方法管道等待.

异步操作 - >等待异步方法 - >等待异步方法2 - >库中的同步方法?

我应该使用TaskCompletionSource还是Task.FromResult来包装库方法调用?

另外,如果我使用上述方法,我的代码会比同步版本更具可扩展性吗?

c# asp.net-mvc asynchronous async-await

0
推荐指数
1
解决办法
1116
查看次数