2011-12-27 46 views
0

为什么此代码无法启动任务?我一直在等待激活。 在这里,我正在做一个简单的任务,试图从剪贴板中读取并在剪贴板可访问时返回给我。当我跑线时,我可以看到任务状态正在等待完成。为什么发生这种情况?任务似乎并未开始

TaskScheduler scheduler = TaskScheduler.Default; 

var fetchTask = 
    new Task<Boolean>(() => 
    { 
     while (1 == 1) 
     { 
      try 
      { 
       IDataObject obj = Clipboard.GetDataObject(); 
       return true; 
      } 
      catch (Exception e) 
      { 
      } 
     } 
    }) 
    .ContinueWith<Boolean>(
     x => 
     { 
     Console.WriteLine("Task completed"); 
     return true; 
     }, 
    CancellationToken.None, 
    TaskContinuationOptions.None, scheduler); 
+3

哪里是你的。开始()? – 2011-12-27 22:22:14

+3

'fetchTask.Start()'? – 2011-12-27 22:22:49

+0

你们为什么不抢分? – 2011-12-27 22:33:29

回答

2

因为......你没有开始呢?

fetchTask.Start(); 

(CW尊重现有的两个意见,这种效果)的tasak永远不会被启动

0

fetchTask.Start(); 
+0

当我使用这种说法时,我会不断收到错误..当它们继续时,我们不能使用开始.... – GutterStink 2011-12-30 12:44:41

0

我知道这是旧的,但尝试使用TaskFactory如果fetchTask.Start()不起作用

TaskScheduler scheduler = TaskScheduler.Default; 
     var fetchTask = Task<Boolean>.Factory.StartNew(() => 
     { 
      while (1 == 1) 
      { 
       try 
       { 
        IDataObject obj = Clipboard.GetDataObject(); 
        return true; 
       } 
       catch (Exception e) 
       { 
       } 
      } 
     }) 
     .ContinueWith<Boolean>(
      x => 
      { 
       Console.WriteLine("Task completed"); 
       return true; 
      }, 
     CancellationToken.None, 
     TaskContinuationOptions.None, scheduler);