草庐IT

async_send

全部标签

c# - 使用 async/await 是否会创建一个新线程?

我是TPL的新手我想知道:C#5.0新增的异步编程支持(通过新的async和await关键字)与线程的创建有何关系?具体来说,async/await的使用是否会在每次使用时创建一个新线程?如果有许多使用async/await的嵌套方法,是否为每个方法创建一个新线程? 最佳答案 简而言之否来自AsynchronousProgrammingwithAsyncandAwait:ThreadsTheasyncandawaitkeywordsdon'tcauseadditionalthreadstobecreated.Asyncmethods

c# - "async Task then await Task"与 "Task then return task"

这个问题在这里已经有了答案:Whyuseasyncandreturnawait,whenyoucanreturnTaskdirectly?(8个答案)关闭6年前。社区在10个月前审查了是否重新打开此问题,然后将其关闭:原始关闭原因未解决快速提问..为了对异步编程和await有一些坚实的基础理解,我想知道这两个代码片段在多线程以及执行顺序和时间方面有什么区别:这个:publicTaskCloseApp(){returnTask.Run(()=>{//savedatabase//turnoffsomelights//shutdownapplication});}与此相比:publicasy

c# - async/await 是否适契约(Contract)时受 IO 和 CPU 限制的方法?

MSDN文档似乎指出async和await适用于IO绑定(bind)任务,而Task.Run应该用于CPU-绑定(bind)任务。我正在开发一个应用程序,该应用程序执行HTTP请求以检索HTML文档,然后对其进行解析。我有一个看起来像这样的方法:publicasyncTaskLoadPage(Uriaddress){using(varhttpResponse=awaitnewHttpClient().GetAsync(address))//IO-boundusing(varresponseContent=httpResponse.Content)using(varcontentStre

c# - .Net 4.5中Async/Await的简单解释

异步任务(Async/Await)在.Net4.5中如何工作?一些示例代码:privateasyncTaskTestFunction(){varx=awaitDoesSomethingExists();vary=awaitDoesSomethingElseExists();returny;}第二个await语句是立即执行还是在第一个await返回后执行? 最佳答案 await暂停方法直到操作完成。所以第二个await会在第一个await返回后执行。有关详细信息,请参阅我的async/awaitintro或officialFAQ.

c# - 错误 : "Cannot use ' async' on methods without bodies". 如何强制异步子覆盖?

我在一个系统上工作,在这个系统中,多个客户端对象需要通过一个接口(interface)实现一个特定的功能,我希望该功能与延续异步运行(我希望实现是I/O绑定(bind)的并希望确保所有客户端对象尽快完成此功能)。我正在使用VisualStudioAsyncCTPRefreshforSP1,使用C#“5.0”。在我的抽象类的子对象中强制执行异步行为的推荐做法是什么(见下文)?我不能(显然)使用虚拟方法方法强制使用“异步”方法。我只能要求“任务”返回类型。这是否意味着我根本不应该尝试在子对象中要求异步行为?在那种情况下,返回类型应该只是“void”吗?公共(public)接口(interf

c# - 为什么添加 Microsoft.Bcl.Async 包后,app.config 文件中会添加一个 "bindingRedirect"?

我想知道为什么nuget在安装Microsoft.Bcl.Async之后将以下代码添加到我的应用程序app.config文件中:如果我从配置中删除这个XML元素,应用程序将无法正常运行。据我所知,我们可以使用bindingRedirect让应用程序加载新版本或旧版本的程序集,以防我们在编译EXE时使用的版本消失。但是,我使用的版本正是2.5.19.0,那我为什么需要重定向?为什么我需要这个bindingRedirect? 最佳答案 程序集Microsoft.Threading.Tasks和Microsoft.Threading.Ta

c# - 当异步方法未以 'Async' 结束时,如何在 Visual Studio 中收到警告?

每次创建不以“Async”结尾的异步方法时,如何让VisualStudio给我一个命名警告?这是异步方法的推荐约定,但我经常发现自己忘记添加该后缀,警告会很有用。 最佳答案 来自选项,转到文本编辑器→基本→代码风格→命名选择管理规范并添加新规范选择方法,勾选所有辅助功能选项,然后从修饰符中选择异步。将标题命名为异步方法并保存现在进入管理命名样式并添加新样式。添加Async作为后缀,命名为AsyncSuffix,然后保存现在按加号并创建新的命名。选择规范作为AsyncMethod,选择所需的Style作为AsyncPostfix,Se

c# - Send Message 和 Post Message 之间有什么区别,它们与 C#、WPF 和纯 Windows 编程有什么关系?

SendMessage和PostMessage(就纯windows编程而言)有什么区别,它们与C#、WPF和纯windows编程有什么关系?我是线程和所有相关内容的新手,所以请原谅我提出明显的问题。我需要挖掘线程的外部结构。请让我知道帮助我构建从win32编程到WPF的概念的链接。我需要了解从Post消息到Afx(启动新线程的调用)以将Invok/BeginInvoke委托(delegate)给Dispatcher。 最佳答案 PostMessage(在“纯Windows编程”中,也称为win32API)是asynchronous,

c# - 为什么 "async void"单元测试无法识别?

asyncvoid单元测试无法在VisualStudio2012中运行:[TestClass]publicclassMyTestClass{[TestMethod]publicasyncvoidInvisibleMyTestMethod(){awaitTask.Delay(1000);Assert.IsTrue(true);}}如果我想进行异步单元测试,测试方法必须返回一个任务:[TestMethod]publicasyncTaskVisibleMyTestMethod(){awaitTask.Delay(1000);Assert.IsTrue(true);}为什么会这样?并不是说我绝

c# - Async PartialView 导致 "HttpServerUtility.Execute blocked..."异常

我有一个试图检索IEnumerable的部分View使用异步从数据库...方法publicstaticclassPostService{publicstaticintPostsPerPage=50;publicstaticasyncTask>GetRecentAsync(intpage=0){returnawaitentityFrameworkDbContext.Posts.ToListAsync();}}局部ViewpublicasyncTaskRecent(intpage=0){returnPartialView(awaitPostService.GetRecentAsync(pa