草庐IT

task_completion_source

全部标签

c# - Task.WaitAll 和异常

我在异常处理和并行任务方面遇到问题。下面显示的代码启动了2个任务并等待它们完成。我的问题是,如果任务抛出异常,则永远不会到达catch处理程序。Listtasks=newList();try{tasks.Add(Task.Factory.StartNew(TaskMethod1));tasks.Add(Task.Factory.StartNew(TaskMethod2));vararr=tasks.ToArray();Task.WaitAll(arr);}catch(AggregateExceptione){//dosomething}但是,当我使用以下代码等待超时任务时,异常被捕获。

c# - 什么是 C# 的 "moSTLy complete"(im) 可变性方法?

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭5年前。Improvethisquestion尽管CLR中提供了一些支持,但由于不可变性并未完全融入C#到F#的程度,或者完全融入框架(BCL),那么C#的(不)可变性的相当完整的解决方案是什么?我的优先顺序是一个解决方案,由与以下内容兼容的一般模式/原则组成一个单一的开源库,几乎没有依赖性少量互补/兼容的开源库商业的东西那个涵盖了Lippert的各种immutability提供不错的性能(我知道这很模糊)支持序列化支持克隆/复制(深/浅/部分?)在

c# - 什么是 C# 的 "moSTLy complete"(im) 可变性方法?

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭5年前。Improvethisquestion尽管CLR中提供了一些支持,但由于不可变性并未完全融入C#到F#的程度,或者完全融入框架(BCL),那么C#的(不)可变性的相当完整的解决方案是什么?我的优先顺序是一个解决方案,由与以下内容兼容的一般模式/原则组成一个单一的开源库,几乎没有依赖性少量互补/兼容的开源库商业的东西那个涵盖了Lippert的各种immutability提供不错的性能(我知道这很模糊)支持序列化支持克隆/复制(深/浅/部分?)在

c# - 如果发生任何异常,如何使 Task.WaitAll() 中断?

我想让Task.WaitAll()在任何正在运行的任务抛出异常时中断,这样我就不必等待60秒才能完成。我如何实现这种行为?如果WaitAll()无法实现,是否还有任何其他C#功能或解决方法?Tasktask1=Task.Run(()=>thrownewInvalidOperationException());Tasktask2=......try{Task.WaitAll(newTask[]{task1,task2,...},TimeSpan.FromSeconds(60));}catch(AggregateException){//Ifanyexceptionthrownonanyo

c# - 如果发生任何异常,如何使 Task.WaitAll() 中断?

我想让Task.WaitAll()在任何正在运行的任务抛出异常时中断,这样我就不必等待60秒才能完成。我如何实现这种行为?如果WaitAll()无法实现,是否还有任何其他C#功能或解决方法?Tasktask1=Task.Run(()=>thrownewInvalidOperationException());Tasktask2=......try{Task.WaitAll(newTask[]{task1,task2,...},TimeSpan.FromSeconds(60));}catch(AggregateException){//Ifanyexceptionthrownonanyo

c# - 如何解决 值不能为空。参数名称 : source in linq?

我不知道为什么会出现这种错误。它有时会发生,我怀疑我的代码在我关闭我的应用程序时仍然有线程在运行。所以当我再次打开时,它发生了。Valuecannotbenull.Parametername:sourceStackTree:   atSystem.Linq.Enumerable.Where[TSource](IEnumerable`1source,Func`2predicate)   atSusenas2015.ViewModels.Kuesioner.VMVsen15_KVal.SettingValidationAndRange(List`1listTextBox,List`1lis

c# - 如何解决 值不能为空。参数名称 : source in linq?

我不知道为什么会出现这种错误。它有时会发生,我怀疑我的代码在我关闭我的应用程序时仍然有线程在运行。所以当我再次打开时,它发生了。Valuecannotbenull.Parametername:sourceStackTree:   atSystem.Linq.Enumerable.Where[TSource](IEnumerable`1source,Func`2predicate)   atSusenas2015.ViewModels.Kuesioner.VMVsen15_KVal.SettingValidationAndRange(List`1listTextBox,List`1lis

c# - 将异步回调与 Task.ContinueWith 结合使用

我正在尝试使用C#的async/await/continuewith。我的目标是必须有2个并行运行的任务,尽管哪个任务按顺序执行一系列操作。为此,我计划有一个List表示并行运行的2个(或更多)任务,并使用ContinueWith在每个Task我的问题是在awaittaskList期间似乎没有执行回调已经回来了。为了总结,这里有一个示例来说明我期望发生的事情:classProgram{staticpublicasyncTaskTest(){System.Console.WriteLine("EnterTest");awaitTask.Delay(100);System.Console.

c# - 将异步回调与 Task.ContinueWith 结合使用

我正在尝试使用C#的async/await/continuewith。我的目标是必须有2个并行运行的任务,尽管哪个任务按顺序执行一系列操作。为此,我计划有一个List表示并行运行的2个(或更多)任务,并使用ContinueWith在每个Task我的问题是在awaittaskList期间似乎没有执行回调已经回来了。为了总结,这里有一个示例来说明我期望发生的事情:classProgram{staticpublicasyncTaskTest(){System.Console.WriteLine("EnterTest");awaitTask.Delay(100);System.Console.

c# - 如何处理 Task.Run 异常

我在捕获Task.Run的异常时遇到了问题,该问题已通过如下更改代码得到解决。我想知道这两种方式处理异常的区别:在Outside方法中我无法捕获异常,但在Inside方法中我可以。voidOutside(){try{Task.Run(()=>{intz=0;intx=1/z;});}catch(Exceptionexception){MessageBox.Show("Outside:"+exception.Message);}}voidInside(){Task.Run(()=>{try{intz=0;intx=1/z;}catch(Exceptionexception){Messag