草庐IT

Asynchronous

全部标签

c# - 并行运行两个异步任务并在 .NET 4.5 中收集结果

我已经尝试了一段时间来获得一些我认为使用.NET4.5会很简单的东西我想同时启动两个长时间运行的任务并收集以最佳C#4.5(RTM)方式产生结果以下是可行的,但我不喜欢它,因为:我要Sleep成为一个异步方法,所以它可以await其他方法它看起来很笨拙Task.Run()我认为这甚至根本没有使用任何新的语言功能!工作代码:publicstaticvoidGo(){Console.WriteLine("Starting");vartask1=Task.Run(()=>Sleep(5000));vartask2=Task.Run(()=>Sleep(3000));inttotalSlept

c# - 并行运行两个异步任务并在 .NET 4.5 中收集结果

我已经尝试了一段时间来获得一些我认为使用.NET4.5会很简单的东西我想同时启动两个长时间运行的任务并收集以最佳C#4.5(RTM)方式产生结果以下是可行的,但我不喜欢它,因为:我要Sleep成为一个异步方法,所以它可以await其他方法它看起来很笨拙Task.Run()我认为这甚至根本没有使用任何新的语言功能!工作代码:publicstaticvoidGo(){Console.WriteLine("Starting");vartask1=Task.Run(()=>Sleep(5000));vartask2=Task.Run(()=>Sleep(3000));inttotalSlept

c# - 异步等待返回任务

有人可以解释这对同步方法意味着什么吗?如果我尝试将方法更改为async然后VS提示一下。这个有效:publicTaskMethodName(){returnTask.FromResult(null);}这行不通:publicasyncTaskMethodName(){returnTask.FromResult(null);}所以基本上我想知道这到底是什么意思:Task.FromResult(null); 最佳答案 async方法与普通方法不同。无论你从async返回什么方法包装在Task中.如果你没有返回任何值(void),它将被包

c# - 异步等待返回任务

有人可以解释这对同步方法意味着什么吗?如果我尝试将方法更改为async然后VS提示一下。这个有效:publicTaskMethodName(){returnTask.FromResult(null);}这行不通:publicasyncTaskMethodName(){returnTask.FromResult(null);}所以基本上我想知道这到底是什么意思:Task.FromResult(null); 最佳答案 async方法与普通方法不同。无论你从async返回什么方法包装在Task中.如果你没有返回任何值(void),它将被包

c# - 返回 void 和返回 Task 有什么区别?

在查看各种C#异步CTP示例时,我看到一些返回void的异步函数,以及其他返回非通用Task的人.我明白为什么要返回Task用于在异步操作完成时将数据返回给调用者,但我看到的函数的返回类型为Task从不返回任何数据。为什么不回void? 最佳答案 SLaks和Killercam的回答很好;我以为我只是添加了更多的上下文。您的第一个问题本质上是关于哪些方法可以标记为async.Amethodmarkedasasynccanreturnvoid,TaskorTask.Whatarethedifferencesbetweenthem?AT

c# - 返回 void 和返回 Task 有什么区别?

在查看各种C#异步CTP示例时,我看到一些返回void的异步函数,以及其他返回非通用Task的人.我明白为什么要返回Task用于在异步操作完成时将数据返回给调用者,但我看到的函数的返回类型为Task从不返回任何数据。为什么不回void? 最佳答案 SLaks和Killercam的回答很好;我以为我只是添加了更多的上下文。您的第一个问题本质上是关于哪些方法可以标记为async.Amethodmarkedasasynccanreturnvoid,TaskorTask.Whatarethedifferencesbetweenthem?AT

c# - 为什么要在 C# 中使用 Task<T> 而不是 ValueTask<T>?

自C#7.0起,异步方法可以返回ValueTask。解释说当我们有缓存结果或通过同步代码模拟异步时应该使用它。但是,我仍然不明白始终使用ValueTask有什么问题,或者实际上为什么async/await不是从一开始就使用值类型构建的。ValueTask何时无法完成这项工作? 最佳答案 来自theAPIdocs(强调):Methodsmayreturnaninstanceofthisvaluetypewhenit'slikelythattheresultoftheiroperationswillbeavailablesynchron

c# - 为什么要在 C# 中使用 Task<T> 而不是 ValueTask<T>?

自C#7.0起,异步方法可以返回ValueTask。解释说当我们有缓存结果或通过同步代码模拟异步时应该使用它。但是,我仍然不明白始终使用ValueTask有什么问题,或者实际上为什么async/await不是从一开始就使用值类型构建的。ValueTask何时无法完成这项工作? 最佳答案 来自theAPIdocs(强调):Methodsmayreturnaninstanceofthisvaluetypewhenit'slikelythattheresultoftheiroperationswillbeavailablesynchron

c# - 如何异步使用 HttpWebRequest (.NET)?

如何异步使用HttpWebRequest(.NET、C#)? 最佳答案 使用HttpWebRequest.BeginGetResponse()HttpWebRequestwebRequest;voidStartWebRequest(){webRequest.BeginGetResponse(newAsyncCallback(FinishWebRequest),null);}voidFinishWebRequest(IAsyncResultresult){webRequest.EndGetResponse(result);}回调函数在

c# - 如何异步使用 HttpWebRequest (.NET)?

如何异步使用HttpWebRequest(.NET、C#)? 最佳答案 使用HttpWebRequest.BeginGetResponse()HttpWebRequestwebRequest;voidStartWebRequest(){webRequest.BeginGetResponse(newAsyncCallback(FinishWebRequest),null);}voidFinishWebRequest(IAsyncResultresult){webRequest.EndGetResponse(result);}回调函数在