草庐IT

TASK_COMPATIBILITY_V

全部标签

c# - 在等待 List<Task> 中的所有任务完成时显示进度

我目前正在尝试在一行的末尾连续打印点作为不确定进度的一种形式,同时运行大量任务,使用以下代码:start=DateTime.Now;Console.Write("*Processingvariables");TaskentireTask=Task.WhenAll(tasks);Taskprogress=newTask(()=>{while(!entireTask.IsCompleted){Console.Write(".");System.Threading.Thread.Sleep(1000);}});progress.Start();entireTask.Wait();timeDi

c# - 返回 Task<string> 的方法

我需要一个返回Task的方法空字符串如publicstaticTaskAsyncTest(){returnnewTask(()=>string.Empty);//problemhere//thismethodwouldwork://returnnewWebClient().DownloadStringTaskAsync(@"http://www.google.de");}publicstaticvoidWorkdl(stringinput){Console.Write("OUT:"+input.Substring(0,100));}这段代码可以编译,但是当我这样调用它时TaskdlTa

c# - Task.ContinueWith 是否捕获调用线程上下文以继续?

下面的Test_Click是在UI线程上运行的代码的简化版本(带有WindowsFormsSynchronizationContext):voidTest_Click(objectsender,EventArgse){vartask=DoNavigationAsync();task.ContinueWith((t)=>{MessageBox.Show("Navigationdone!");},TaskScheduler.FromCurrentSynchronizationContext());}我是否应该显式指定TaskScheduler.FromCurrentSynchronizat

c# - 带有未捕获异常的 Task.Factory.StartNew 会杀死 w3wp?

我刚刚将我网站的一些代码从使用QueueUserWorkItem转换为Task.Factory.StartNew我有一些错误的代码引发了异常并最终关闭了w3wp。在WindowsServer2008R2、x64上运行IIS7.5Task.Factory.StartNew(()=>{MethodThatThrowsException();}Application:w3wp.exeFrameworkVersion:v4.0.30319Description:Theprocesswasterminatedduetoanunhandledexception.ExceptionInfo:Syst

c# - 使用 Task.Run() 写入控制台失败

我的一位同事发现我们的代码存在问题,花了一段时间才查明到底发生了什么,但这个简单的例子可以最好地证明这一点://FailsclassProgram{staticvoidMain(string[]args){Task.Run(()=>Console.WriteLine("HelloWorld"));Console.ReadKey();}}//WorksfineclassProgram{staticvoidMain(string[]args){Console.Write(String.Empty);Task.Run(()=>Console.WriteLine("HelloWorld"));

c# - 如何将 task.Wait(CancellationToken) 转换为 await 语句?

因此,task.Wait()可以转化为awaittask。当然,语义是不同的,但这大致就是我将使用Waits的阻塞代码转换为使用awaits的异步代码的方式。我的问题是如何将task.Wait(CancellationToken)转换为相应的await语句? 最佳答案 await用于异步方法/委托(delegate),它们要么接受CancellationToken,因此您应该在调用它时传递一个(即awaitTask.Delay(1000,cancellationToken)),或者它们没有并且不能真正被取消(例如等待I/O结果)。但

c# - 什么时候应该以 TaskScheduler.Current 作为参数调用 Task.ContinueWith?

我们正在使用thiscodesnippet从StackOverflow生成一个任务,该任务在任务集合中的第一个任务成功完成后立即完成。由于其执行的非线性特性,async/await并不是真正可行的,因此此代码改用ContinueWith()。不过,它没有指定TaskScheduler,它是numberofsources已经提到可能是危险的,因为它使用TaskScheduler.Current而大多数开发人员通常期望来自延续的TaskScheduler.Default行为。普遍的看法似乎是您应该始终将显式的TaskScheduler传递给ContinueWith。但是,我还没有看到关于何

c# - 如何使用 Task.Run(Action<T>)

我正在尝试创建一个接受TcpClient连接并在客户端连接后执行任务“ConnectedAction”的方法。我在尝试创建新任务以运行委托(delegate)“ConnectedAction”时收到编译错误。Argument1:cannotconvertfrom'void'to'System.Func'我相信这个错误是因为该方法正在尝试运行“ConnectedAction”方法并将void返回给Task.Run参数。如何让任务运行“ConnectedAction”委托(delegate)?classListener{publicIPEndPointListenerEndPoint{ge

c# - 我可以将 Task.Delay 用作计时器吗?

我想每秒执行一些代码。我现在使用的代码是:Task.Run((Action)ExecuteSomething);ExecuteSomething()定义如下:privatevoidExecuteSomething(){Task.Delay(1000).ContinueWith(t=>{//Dosomething.ExecuteSomething();});}这个方法会阻塞线程吗?或者我应该在C#中使用Timer类吗?似乎Timeralsodedicatesaseparatethreadforexecution(?) 最佳答案 Tas

c# - 尝试在 : await Task. 之外捕获 Run(()

在awaitTask.Run(()=>之外的trycatch是否有意义,或者仅在await内部使用它们?privateasyncvoidTest(){try{awaitTask.Run(()=>{try{DoingSomething();}catch(Exceptionex){log.Error(ex.Message);}});}catch(Exceptionex){log.Error(ex.Message);}} 最佳答案 如果你处理Exception在委托(delegate)内部(在您的情况下仅用于记录目的),await在正常情