我有一项耗时的任务,我需要在单独的线程中运行以避免锁定GUI线程。随着此任务的进行,它会更新特定的GUI控件。问题是用户可能会在任务结束前移动到GUI的另一部分,在这种情况下,我必须:取消正在进行的任务(如果它处于事件状态)等到它完成取消:这很重要,因为耗时任务的目标是更新特定控件。如果有多个线程同时尝试执行此操作,事情可能会变得一团糟。从头开始任务举一个具体的例子,假设表单有两部分:一部分用于导航目录树,另一部分用于显示缩略图。当用户导航到另一个目录时,需要刷新缩略图。首先我想到了使用BackgroundWorker和AutoResetEvent来等待取消,但我一定是搞砸了,因为我在
http://msdn.microsoft.com/en-us/library/dd988458.aspx更新:所以,让我们讨论这篇文章:http://msdn.microsoft.com/en-us/library/dd997396.aspx我稍微修改了一下代码:staticvoidMain(){vartokenSource2=newCancellationTokenSource();CancellationTokenct=tokenSource2.Token;vartask=Task.Factory.StartNew(()=>{//Werewealreadycanceled?ct.
令我惊讶的是,Profile78库中不存在方便的System.Threading.Timer类。为了使用这个类,我创建了另一个以4.0框架为目标的PCL,并编写了一个简单的包装器(正如一篇博文中所建议的那样):publicclassPCLTimer{privateTimertimer;privateActionaction;publicPCLTimer(Actionaction,objectstate,intdueTimeMilliseconds,intperiodMilliseconds){this.action=action;timer=newTimer(PCLTimerCallb
Configuration视频讲解package说明Microsoft.Extensions.Configuration.Abstractions:抽象包,一大堆的接口Microsoft.Extensions.Configuration.Binder:提供一大堆的扩展,比如类型转换Microsoft.Extensions.Configuration.Json:json实现Microsoft.Extensions.Configuration.CommandLine:命令行实现Microsoft.Extensions.Configuration.EnvironmentVariables:环境变量实
Configuration视频讲解package说明Microsoft.Extensions.Configuration.Abstractions:抽象包,一大堆的接口Microsoft.Extensions.Configuration.Binder:提供一大堆的扩展,比如类型转换Microsoft.Extensions.Configuration.Json:json实现Microsoft.Extensions.Configuration.CommandLine:命令行实现Microsoft.Extensions.Configuration.EnvironmentVariables:环境变量实