C# Start may not be called on task that has completed

问题描述

C#启动了任务并完成后再一次start()会报以上错误,这个是什么原因?判断“task.IsCompleted==true”后重新start()会报错,请问下一个task完成后不能多次启动么?

解决方案

解决方案二:
用task.ContinueWith试试
解决方案三:
task.ContinueWith是在我这个任务结束之后“马上”就执行,但是我是要检测到某个标志我才重新这个任务,也就是说如果我的任务A完成之后我会启动另外一个任务做检测,一旦检测到了某个标志我就重新启动任务A,等A执行结束后我又重复做检测了。
解决方案四:

if(ProcessFlag==true){if(task_Windows.IsCompleted==true){//Tasklist_windows.Clear();Tasklist_windows.Add(task_Windows);task_Windows.Start();}if(task_Mouse.IsCompleted==true){//Tasklist_mouse.Clear();Tasklist_mouse.Add(task_Mouse);task_Mouse.Start();}ProcessFlag=false;}
解决方案五:
Thead.CurrentThread.Sleep()

时间: 2024-09-14 07:48:55

C# Start may not be called on task that has completed的相关文章

.NET并行(多核)编程系列之五 Task执行和异常处理

前言:本篇主要讲述等待task执行完成. 本篇的议题如下: 1. 等待Task执行完成 2. Task中的异常处理 首先注意一点:这里提到的"等待"和之前文章提到的"休眠"意思是不一样的: 等待:在等待一个task的时候,这个task还是在运行之中的,"等待"相当于在监听运行的task的执行情况. 休眠:让tasku不运行. 在上篇文章中介绍了如果从Task中获取执行后的结果:在Task执行完成之后调用Task.Result获取.其实也可以用其他

.NET 并行(多核)编程系列之五 Task执行和异常处理

原文:.NET 并行(多核)编程系列之五 Task执行和异常处理 .NET 并行(多核)编程系列之五 Task执行和异常处理 前言:本篇主要讲述等待task执行完成. 本篇的议题如下: 1. 等待Task执行完成 2. Task中的异常处理   系列文章链接: .NET 4 并行(多核)编程系列之一入门介绍 .NET 4 并行(多核)编程系列之二 从Task开始  .NET 4 并行(多核)编程系列之三 从Task的取消  .NET 4 并行(多核)编程系列之四 Task的休眠  .NET 并行

在asp.net页面中使用异步读取

asp.net|页面|异步 有的时候我们需要在网页里读取论坛的信息,在传统ASP的时候我们使用的是JS或者是IFRAME,这两种方式都不是很方便,而且对搜索引擎不友好.现在有了.Net,我们有了另一种方式. 要求:论坛需要提供RSS支持. 代码如下:     #region task class    //这是一个任务类,执行具体的任务    public class RssAsyncTask    {        private String _rssContent;        priv

利用PHP自定义错误处理器处理出错信息

如果您是PHP老手,当然知道当PHP脚本出错时发生了什么事情.此时PHP解析器将在屏幕上给出错误信息,如 Fatal error: Call to undefined function on line 19 --,因此程序在此处终止.这个信息会吓到客户,他可能立即打电话和你进行咨询. 幸运的是,这里有解决办法.PHP拥有内置工具,可以让开发人员捕捉脚本错误然后将它们转到自定义的错误处理器.此时则可以对处理器进行编程显示更多关于错误的详细信息.还可以将错误写入文件或数据库以采取补救措施.有时候还可

用J2SE1.5来实现多任务的Java应用程序

J2SE 5.0平台包含了一个新的并发工具程序包.这个程序包中的类替并发类(concurrent classe)或并发设计中使用的应用程序建立阻塞(blocking).该并发工具包含下面一些内容: 高性能的.灵活的线程池 异步执行事务的框架组件 为并发访问优化过的集合类宿主(host) 本文介绍了J2SE 5.0框架组件类和它们的重要特性.本文的下载代码提供了一些简单的.容易使用的示例,它演示了所有的新线程框架组件类.你在阅读文章内容之后运行这些示例可以使自己对这些特性有更好的理解. Execu

移动开发iOS&Android对比学习--异步处理

在移动开发里很多时候需要用到异步处理.Android的主线程如果等待超过一定时间的时候直接出现ANR(对不熟悉Android的朋友这里需要解释一下什么叫ANR.ANR就是Application Not Responding,应用无响应的意思.系统在应用一段时间无响应的时候会弹出这个对话框.用户可以选择继续等待或者强制关闭).这些还是次要的,最主要的还是心急的用户.让用户长时间等待是得罪他们的最好办法! Android有一个很简单的办法实现异步处理:AnsyncTask.使用的时候你需要继承一个基

Android多线程任务优化:实现后台预读线程

转载请注明出处.博客地址:http://blog.csdn.net/mylzc导语:从上一篇<多线程任务的优化1:探讨AsyncTask的缺陷>我们了解到,使用AsyncTask有导致应用FC的风险,而且AsyncTask并不能满足我们一些特定的需求.下面我们介绍一种通过模仿AsyncTask的封装方式,实现一个后台预读数据的线程. 概述:在空闲时对获取成本较高的数据(如要读取本地或网络资源)进行预读是提高性能的有效手段.为了给用户带来更好的交互体验,提高响应性,很多网络应用(如新闻阅读类应用

ThreadPool 线程池的使用

http://royzhou1985.iteye.com/blog/789934 import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; public class ThreadPoolTest { B

java中Executor、ExecutorService、ThreadPoolExecutor介绍(转)

  1.Excutor      源码非常简单,只有一个execute(Runnable command)回调接口  public interface Executor {     /**     * Executes the given command at some time in the future.  The command     * may execute in a new thread, in a pooled thread, or in the calling     * th