草庐IT

task_reminds

全部标签

c# - Task.Run 和 Task.Factory.StartNew 之间不同的异常处理

我在使用Task.Factory.StartNew并trycatch抛出的exception时遇到问题。在我的应用程序中,我有一个长时间运行的任务,我想将其封装在Task.Factory.StartNew(..,TaskCreationOptions.LongRunning);但是,当我使用Task.Factory.StartNew时,异常没有被捕获。然而,当我使用Task.Run时,它的工作方式与我预期的一样,我认为它只是Task.Factory.StartNew的包装器(根据例如thisMSDNarticle).此处提供了一个工作示例,不同之处在于使用Task.Run时将异常写入控

c# - 无法将类型 'bool' 隐式转换为 'system.threading.tasks.task bool'

我在服务实现代码中遇到此错误:“无法将类型‘bool’隐式转换为‘system.threading.tasks.taskbool’”。你能更正我的代码吗?publicTasklogin(stringusn,stringpwd){DataClasses1DataContextauth=newDataClasses1DataContext();varmessage=frompinauth.Userswherep.usrName==usn&&p.usrPass==pwdselectp;if(message.Count()>0){returntrue;}else{returnfalse;}}

c# - 带有 CancellationTokenSource 的 Task.Factory.FromAsync

我有以下代码行用于从NetworkStream异步读取:intbytesRead=awaitTask.Factory.FromAsync(this.stream.BeginRead,this.stream.EndRead,buffer,0,buffer.Length,null);我想让它支持取消。我知道我可以canceltasksusingaCancellationTokenSource,但是我看不出有什么方法可以将它传递给TaskFactory.FromAsync().是否可以使FromAsync()构造的任务支持取消?编辑:我想取消一个已经在运行的任务。

c# - 如何强制 Task.Factory.StartNew 进入后台线程?

我已经看到许多其他类似的问题,但没有在那里找到我的答案。我的问题是我正在使用以下流程创建线程:privatevoidbtn_Click(objectsender,EventArgse){service.GetCount((count,ex)=>{if(ex!=null)return;for(inti=0;icallback){varcallingThread=TaskScheduler.FromCurrentSynchronizationContext();Funcaction=()=>{returnclient.GetCount();//Synchronousmethod,could

c# - 是否可以从 TPL Task 派生以从方法返回更多详细信息?

我原来的方法是这样的:stringDoSomeWork();方法DoSomeWork在另一个线程上开始一些工作并返回执行ID(只是随机字符串)。稍后我可以通过返回的执行ID查询结果。要点是在作业完成之前使执行ID可用。现在我想更改签名以返回Task,这样用户可以根据需要等待。TaskDoSomeWork();与此同时,我仍然需要返回执行ID(例如用于跟踪目的)并且我看到了一些选项。首先,使用out参数,其次,返回包含执行ID和任务的元组(在C#中,这看起来不是最佳选择),第三,我实际上想问一下。如果我创建一个派生Task的类会怎样:publicclassExtendedTask:Tas

c# - 多线程,Task.Run 错误 'The call is ambiguous between the following methods or properties'

当我尝试构建项目时,显示以下错误消息。Thecallisambiguousbetweenthefollowingmethodsorproperties:'System.Threading.Tasks.Task.Run(System.Action)'and'System.Threading.Tasks.Task.Run(System.Func)'我该如何解决这个问题?publicstaticclassMaintananceManager{privatestaticThreadSafeSocialMediaListPostList=newThreadSafeSocialMediaList(

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

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