jjzjj

c# - 使用 Task.StartNew 方法时如何保证创建新线程

据我所知,我有误导性信息。我需要在后台运行一个单独的线程。目前我是这样做的:vartask=Task.Factory.StartNew(CheckFiles,cancelCheckFile.Token,TaskCreationOptions.LongRunning,TaskScheduler.Default);//CheckforfilesonanotherthreadprivatevoidCheckFiles(){while(!cancelCheckFile.Token.IsCancellationRequested){//dostuff}}这总是为我创建一个新线程。然而,经过多次讨

C# 窗口应用程序 : "MyApplication.vshost.exe" Continuous coming at task manager

在我的c#windows应用程序中,每当我在visualstudio2008中打开我的解决方案时,“MyApplication.vshost.exe”总是在窗口任务管理器-->进程选项卡中可见。当我试图杀死它时,它再次出现在“进程”选项卡上。我没有得到vshost.exe创建的内容?为什么它没有从任务管理器中删除?我们如何删除它? 最佳答案 VS2005引入了vshost.exe功能。它的主要目的是使调试启动更快-基本上已经有一个框架正在运行的进程,只要您希望它就可以加载您的应用程序。参见thisMSDNarticle和thisbl

c# - 等待和异步属性中的方法错误 'Cannot await ' System.Threading.Tasks.Task'

我已经为.NETFramework4、Silverlight4和5以及WindowsPhone7.5和8安装了NuGetPackageAsync。Version1.0.16我使用的是Microsoft.NET4.0,但由于虚拟主机包限制,我无法升级。(可悲!)我的测试代码:(我正在执行LinqtoSQL查询代替Thread.Sleep)publicclassSearch{publicasyncTask>GetResults(stringSearchString){awaitSystem.Threading.Tasks.Task.Factory.StartNew(()=>Thread.S

c# - 在任务异常的情况下,根据用户输入多次重试任务

我的应用程序中的所有服务调用都是作为任务实现的。当任务出现故障时,我需要向用户显示一个对话框以重试上次失败的操作。如果用户选择重试,程序应该重试该任务,否则程序的执行应该在记录异常后继续。任何人都对如何实现此功能有一个高层次的想法? 最佳答案 2017年5月更新C#6异常过滤器使catch子句更加简单:privatestaticasyncTaskRetry(Funcfunc,intretryCount){while(true){try{varresult=awaitTask.Run(func);returnresult;}catch

c# - 如何根据最佳实践在 C# 4 中创建异步方法?

考虑以下代码片段:publicstaticTaskFetchAsync(){stringurl="http://www.example.com",message="HelloWorld!";varrequest=(HttpWebRequest)WebRequest.Create(url);request.Method=WebRequestMethods.Http.Post;returnTask.Factory.FromAsync(request.BeginGetRequestStream,request.EndGetRequestStream,null).ContinueWith(t=

c# - 异步任务与异步无效

这可能是一个非常愚蠢的问题,但我有以下代码行可以将RAW图像转换为BitmapImages:publicasyncvoidCreateImageThumbnails(stringimagePath,intimgId){awaitTask.Run(()=>controlCollection.Where(x=>x.ImageId==imgId).FirstOrDefault().ImageSource=ThumbnailCreator.CreateThumbnail(imagePath));}调用此方法CreateThumbnail()publicstaticBitmapImageCrea

c# - 任务排序和重新进入

我有以下情况,我认为这可能很常见:有一个任务(UI命令处理程序)可以同步或异步完成。命令到达的速度可能比处理它们的速度快。如果某个命令已经有待处理的任务,则新的命令处理程序任务应按顺序排队和处理。每个新任务的结果可能取决于前一个任务的结果。取消应该被观察到,但为了简单起见,我想将它留在这个问题的范围之外。此外,线程安全(并发)不是必需的,但必须支持可重入。这是我试图实现的基本示例(为简单起见,作为控制台应用程序):usingSystem;usingSystem.Threading.Tasks;namespaceConsoleApp{classProgram{staticvoidMain

c# - 创建带有心跳的任务

我想运行一个Task它有一个“heartbeat”,它会在特定的时间间隔内持续运行,直到任务完成。我认为像这样的扩展方法会很好用:publicstaticasyncTaskWithHeartbeat(thisTaskprimaryTask,TimeSpanheartbeatInterval,ActionheartbeatAction,CancellationTokencancellationToken)例如:publicclassProgram{publicstaticvoidMain(){varcancelTokenSource=newCancellationTokenSource(

c# - 在非异步方法中使用异步

假设我只想在async中运行一个方法。所以我有一个async方法,如下所示:publicasyncTaskLoad(){Tasktask1=GetAsync(1);Tasktask2=GetAsync(2);Tasktask3=GetAsync(3);vardata1=awaittask1;//然后我试图在另一个方法中调用那个async方法作为一个任务,并希望它等到那段特定的async代码是完毕。问题是它不是。当它到达Load()中的第一个await时,它只是没有完成加载。调试器变为空白并且没有给出其他错误。是否可以从非async方法调用async方法,就像这样?我不需要此特定任务是a

c# - 在 F# 中正确等待返回类型为 Task<T> 的异步 C# 方法

我希望能够从F#使用C#库。大多数情况下,这非常简单。但是,如果我尝试调用返回Task的函数我无法获得返回值。所以,我有具有以下定义的C#方法:publicasyncTaskReadEventAsync(stringstreamName,intposition)whereTEvent:class我正在尝试使用F#中的这个方法,如下所示:letreadEventFromEventStore(eventStore:IEventStoreRepository)(streamName:string)(position:int)=async{returneventStore.ReadEventA