【C# & WPF 随手小计之一 ——初探async await 实现多线程处理】教程文章相关的互联网学习教程文章

c# – 如何等待await / async方法完成【代码】

我有以下Async方法:private async void ProcessSearch() {// get catalogs on first searchif (_invoiceTypes == null && _invoiceAccounts == null){var confWcf = new Data.ConfigurationWCF();_invoiceTypes = await confWcf.GetInvoiceTypesAsync(MainForm.State.Entity);_invoiceAccounts = await confWcf.GetInvoiceAccountsAsync(MainForm.State.Entity);confWcf.Dispose();}var seekWcf = new DataSeekWCF();_ds = await ...

c# – 在async / await中调用异步方法和TaskScheduler【代码】

请考虑以下代码async Task<int> foo() {await Task.Delay(1000);return 42; }... // OPTION 1Task t = Task.Factory.StartNew(foo,CancellationToken.None, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default);t.Wait();... // OPTION 2 Task t = foo(); t.Wait()问题 >两个通话选项之间的实质区别是什么?>在选项1中.假设我覆盖默认的TaskScheduler.等待foo方法 – 将使用哪个TaskScheduler?它会使用默认值还是参数传...

c# – WinRT调用Flyout.ShowAt()async【代码】

我正在构建我自己的Flyout控件,列表选择在Windows Phone和Windows桌面上使用它.与ListPickerFlyout类不同,Flyout类没有用于显示弹出窗口的异步方法. 如何在弹出窗口关闭后调用ShowAt方法异步并返回所选值? 解: 可以使用TaskCompletionSource< T>来实现异步行为. (感谢AwaitableUI libary).还有什么困扰我的是我必须在构造函数中手动创建ListView.如果我可以使用XAML而只是分配一个模板,那将是很好的,但我没有找到一种有效的方法....

在Swift中C#async await【代码】

我正在玩Swift中的闭包和链接完成.我非常熟悉异步的C#样式并等待,所以我想知道如何将以下代码片段从C#“转换”为Swift.public async Task SomeFunction(string inputString) {var first = await GetFirstVariableAsync(inputString);var second = await GetSecondVariableAsync(first);if (second == "some condition"){first = await GetFirstVariableAsync(inputString);var second = await GetSecondVariableAsync(first);} }Sw...

c# – 调用Async WebAPI后,Control不会返回到等待的webClient【代码】

我们有一个Restful Client-Sever环境,我正在尝试调试我的代码,客户端代码如下所示:await Client.DoWork(Id);服务器代码如下所示:public virtual async Task<IActionResult> DoWork(long Id){return Ok();}请注意,客户端是该服务的webclient,它是从https://github.com/swagger-api/swagger-codegen代码自动生成的. 它永远不会返回的自动生成代码中的点如下所示:var response_ = await client_.SendAsync(request_,System.Net.Htt...

c# – Async Disposable.Create【代码】

Disposable.Create需要Action作为参数.在处理Rx订阅时运行Action. 在处理Rx订阅时,我想运行一些异步清理代码,但是使用async()=> with Action与async void相同,我想避免.有关我为什么要避免这种情况的详细信息,请参阅here. 是否可以创建类似Disposable.AsyncCreate的东西,它接受Func< Task>而不是行动.如果是这样,我应该如何将它作为CompositeDisposable的一部分使用? 还是有其他模式来处理异步处置?解决方法:你可以这样做.我仍然...

c# – 说丢弃任务的非异步方法是否位于async-await链的“顶部”是否正确?【代码】

我理解异步方法本身是如何工作的:编译器将其转换为创建状态机(在堆上)的代码,以便该方法实际上“暂停”到达等待状态并返回任务并且调用堆栈展开.在这个链的“底部”是一个简单地返回任务的方法,通常是在启动“自然异步”过程(如I / O)之后. 那么,什么是“顶部”?我想最顶层的方法只是丢弃任务,所以它可以继续前进.那是对的吗? 也许有人可以描述这个的最简单方法是我们的??执行上下文是Windows Forms应用程序而“top”是消息泵.解...

c# – Async CTP – Ambient CancellationToken和IProgress

请记住Async CTP通过环境SynchronizationContext促进隐式调度,是否有任何理由我不应该进行CancellationToken和IProgress环境? 我正在通过方法传递这些,就像我传递一个TaskScheduler进行显式调度一样.但是,看到调度程序现在应该是环境调度,我可能不会遵循相同的规则来解决其他问题吗?解决方法:与IProgress< T>相比,CancellationToken是更可能的候选者.使用IProgress< T>,您通常在不同级别具有不同的T(更高级别的异步方法组合了其较...

c# – 异常未在Async / Await块中捕获【代码】

我只是学习在Windows窗体应用程序中使用async / await,尝试在执行慢动作时保持我的Windows应用程序响应.我看到抛出异常的处理有所不同. 如果我使用WebClient.DownloadStringTaskAsync,我的代码会捕获异常:private async void button1_Click(object sender, EventArgs e) {try{this.textBox1.Text = await webClient.DownloadStringTaskAsync("invalid address");}catch (Exception exc){textBox1.Text = exc.Message;} }但是,如果...

python 3.5中的async / await关键字是否受到C#中async / await的启发?【代码】

python 3.5中的async / await(语法和关键字)与C#中的async / await非常相似. C#示例:async void asyncTask(){await asyncMethod() }Python示例:async def asyncTask(): await async_method()问题:python 3.5中的async / await是否受到C#中async / await的启发?如果是,为什么?解决方法:在PEP 492(添加await和async关键字的提议)中,C#使用它们是mentioned(除了其他):Why “async” and “await” keywords async/await is not...

C#async /等待读取DbDataReader时的效率(或滥用)【代码】

偶然发现了一段相对经常使用的代码,这些代码起初似乎效率低下. (我知道有时优化可能是邪恶的,但我在想) 介绍部分 – 读取返回数据的相当简单的SP执行:try {await connection.OpenAsync();using (var command = connection.CreateCommand()){command.CommandText = sql.ToString();command.Parameters.AddRange(sqlParameters.ToArray());var reader = await command.ExecuteReaderAsync();if (reader.HasRows){while (await reade...

c# – 传入Async完成的事件处理程序的附加变量【代码】

private void GeoCode_Method1(string myaddress, int waypointIndex, string callingUser) { GCService.GeocodeCompleted += new EventHandler<NSpace.GCService.GeocodeCompletedEventArgs>(GeoCode_Method1_GeocodeCompleted);GCService.GeocodeAsync(request, waypointIndex); }void GeoCode_Method1_GeocodeCompleted(object sender, NSpace.GCService.GeocodeCompletedEventArgs e) {//***QUESTION: how do I acce...

c# – 使用和不使用async修饰符的异步方法【代码】

方法Add1()和Add2()有什么区别?有什么不同吗?对于我所知道的所有用法(如方法UsageTest()中所示)是相同的.private async Task<int> Add1(int a, int b) {return await Task.Run(() =>{Thread.Sleep(1000);return a + b;}); }private Task<int> Add2(int a, int b) {return Task.Run(() =>{Thread.Sleep(1000);return a + b;}); }private async void UsageTest() {int a = await Add1(1, 2);int b = await Add2(1, 3); }解决方法:从...

C#async等待Action.delay在Action中【代码】

我在完成异步延迟任务时遇到了一些麻烦.我正在编写一个需要以数十/数十万个异步执行脚本的规模运行的应用程序.我正在使用C#Actions执行此操作,有时,在执行特定序列期间,为了使脚本正确执行,它需要等待外部资源才能达到预期状态.起初我使用Thread.Sleep()编写了这个,但结果却是应用程序性能的鱼雷,所以我正在研究async / await for async sleep.但我无法让它真正等待暂停!有人可以解释一下吗?static void Main(string[] args){var...

c# – async等待CPU计算与IO操作的使用?【代码】

我已经知道async-await保持线程上下文,也处理异常转发等(这有很大帮助). 但请考虑以下示例:/*1*/ public async Task<int> ExampleMethodAsync() /*2*/ { /*3*/ var httpClient = new HttpClient(); /*4*/ /*5*/ //start async task... /*6*/ Task<string> contentsTask = httpClient.GetStringAsync("http://msdn.microsoft.com"); /*7*/ /*8*/ //wait and return... /*9*/ string...