草庐IT

dispatch-async

全部标签

c# - 是什么导致这里出现 "extension methods cannot be dynamically dispatched"?

编译错误'System.Data.SqlClient.SqlConnection'hasnoapplicablemethodnamed'Query'butappearstohaveanextensionmethodbythatname.Extensionmethodscannotbedynamicallydispatched.Considercastingthedynamicargumentsorcallingtheextensionmethodwithouttheextensionmethodsyntax.现在,我知道如何解决该问题,但我正试图更好地了解错误本身。我有正在构建的类来利

c# - Winforms调用async方法挂掉程序

我已经解决这个问题一段时间了,但现在我真的很想知道哪里出了问题。我有一个相当简单的应用程序(它是一个用于youtrack的turtoiseSVN插件,但我可以使用一个简单的winforms应用程序重现该问题)。我有一个异步方法ResolveIssuepublicasyncTaskResolveIssue(Issueissue,intrevision,string[]pathList){awaitTask.Delay(1000);returntrue;}要创建死锁,我要做的就是在Button事件处理程序中调用此异步方法,然后调用Task.Wait或Task.Result,像这样priva

c# - async 和 await 是否专用于基于 GUI 的异步编程?

我一直在阅读C#中新的async和await运算符,并试图找出它们在哪些情况下可能对我有用。我研究了几篇MSDN文章,下面是我在字里行间读到的内容:您可以对Windows窗体和WPF事件处理程序使用async,这样它们就可以执行冗长的任务,而不会在执行大量操作时阻塞UI线程。asyncvoidbutton1_Click(objectsender,EventArgse){//eventhoughthiscalltakesawhile,theUIthreadwillnotblock//whileitisexecuting,thereforeallowingfurthereventhandl

c# - 在 async/await 中使用 ThreadStatic 变量

在C#中使用新的async/await关键字,现在对您使用ThreadStatic数据的方式(以及时间)产生了影响,因为回调委托(delegate)是在与async不同的线程上执行的操作开始于。例如,以下简单的控制台应用程序:[ThreadStatic]privatestaticstringSecret;staticvoidMain(string[]args){Start().Wait();Console.ReadKey();}privatestaticasyncTaskStart(){Secret="moomoo";Console.WriteLine("Startedonthread

c# - 在事件分派(dispatch)之前检查 null ...线程安全吗?

有些事情让我感到困惑,但从来没有造成任何问题......推荐的调度事件的方式如下:publiceventEventHandlerSomeEvent;...{....if(SomeEvent!=null)SomeEvent();}在多线程环境中,此代码如何保证另一个线程不会在检查null和调用事件之间更改SomeEvent的调用列表? 最佳答案 正如您所指出的,在多个线程可以同时访问SomeEvent的情况下,一个线程可以检查SomeEvent是否为null并确定它是否为null。就在这样做之后,另一个线程可以从SomeEvent中删

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