TPL没有启动任务

时间:2013-10-07 07:28:00

标签: c# timer task-parallel-library

我执行以下操作:

private void OnTimedEvent(object sender, ElapsedEventArgs e)
    {
        tokenSource.Cancel();
        receiveDataTimer.Stop();
        Console.WriteLine("TIMER DONE");
    }

private void EventDataReceived(Message msg)
    {
       dataQue.Enqueue(msg.data);
       var context = new DispatcherSynchronizationContext(Application.Current.Dispatcher);

            if(receiveDataTimer.Enabled==false)
            {
                Console.WriteLine("START TASK");
                tokenSource = new CancellationTokenSource();

                Task.Factory.StartNew(() => Work(tokenSource.Token, MaxPoints), tokenSource.Token);
                Task.Factory.StartNew(() => Update(context, tokenSource.Token), tokenSource.Token);             
                receiveDataTimer.Start();
            }
            else
            {
                receiveDataTimer.Interval=3000;
            }

    }

基本上,有一个计时器可以设置令牌来取消这两个任务。一段时间后,计时器重新启动,应该再次启动两个任务。但他们没有。

有人可以告诉我为什么吗?两者都只是在第一次运行应用程序时启动。

我现在添加了更多代码。从串行端口接收数据时,将调用EventDataReceived。我调试了,计时器完成了它应该做的事情。

收到的数据 - >开始任务 - >启动计时器 - > (如果3s没有收到数据)停止任务 - > (如果收到数据)重启任务和计时器。

但任务不会重新开始。

0 个答案:

没有答案