我已经了解了任务Difference between Task (System.Threading.Task) and Thread
的优点msdn还说“......在.NET Framework 4中,任务是编写多线程,异步和并行代码的首选API。”
现在我的程序包含从udp接收组播数据的代码:
thread = new Thread(WhileTrueFunctionToReceiveDataFromUdp);
.....
thread.Start();
我为每个套接字都有几个这样的线程。
我最好替换此代码以使用Task
吗?
答案 0 :(得分:2)
这取决于您正在做什么 - 如果您不打算使用Task
和TPL中的任何新功能,并且现有代码有效,则没有理由进行更改。
但是,Task
有许多优点 - 特别是对于要在线程池线程中运行并返回结果的操作。
另外 - 假设你正在使用“每个套接字的线程”,你可能会有更长的生命线程。因此,如果您切换到Task.Factory.StartNew
,您可能希望指定任务应该是LongRunning,或者您最终将使用大量ThreadPool线程来获取套接字数据(使用默认调度程序)。
答案 1 :(得分:1)
不要更改已经有效且可以工作的代码中的任何内容(至少根据Microsoft)。仅因以下原因更改它:
您想使用Tasks
个人学习。
请记住,在操作系统级别上,它们基本上最终会进入相同的OS内核对象。
希望这有帮助。