自从有了task以后很少再启动线程Thread了。贴下代码:
比如以前要写成这样:
public void StartMonitor() { t = new Thread(ParseReceiveData);//创建了线程还未开启 t.IsBackground = true; t.Start(); isStarted = true; } private void ParseReceiveData() { int len = 112; while (isStarted){......} }
现在只要写成这样就好了。
//方式1 Task.Factory.StartNew(ParseReceiveData); //方式2 Task.Run(()=>ParseReceiveData());
用了很久了,今天碰着问题了。当点击停止以后,再次点击start时,代码不能再次执行ParseReceiveData方法了。
天哪,这难道是bug!!不过用了这么久没有把task,开了,在开过,确实也是第一次这么用结果就触雷了。
尤其是刚开始代码还是这样:parseTask = Task.Factory.StartNew(ParseReceiveData); 那基本上就2次就会有一次
不执行方法。结果一查才知道,Task 就是这样的。以后要想重复执行方法,请使用Timer。
以后记住了! Task 更多使用场合:搭配 await 吧。别哪哪都用!