簡體   English   中英

如何在C#中使用Tasks.Parallel停止現有任務

[英]How to stop an existing task using Tasks.Parallel in c#

我想要做的如下:

1. Start TCP socket listener on another thread (so it does not block my app.)
2. Start 1..n other processes on other threads which will send data to my listener
3. Stop my listener when all of the other processes have finished.

如何使用.Net中的Parallel庫實現此目的?

我想我需要以某種方式保留對初始生成線程的引用,並在達到計數器或其他原因時終止它?

使用子級/父級任務怎么辦:

http://msdn.microsoft.com/en-us/library/dd537609.aspx

var parent = Task.Factory.StartNew(() =>
{
    Console.WriteLine("Parent task beginning.");

    var child = Task.Factory.StartNew(() =>
    {
        Thread.SpinWait(5000000);
        Console.WriteLine("Attached child completed.");
    }, TaskCreationOptions.AttachedToParent);

});

parent.Wait();
Console.WriteLine("Parent task completed.");

/* Output:
    Parent task beginning.
    Attached task completed.
    Parent task completed.
 */

如果您使用異步Socket API,則無需擔心為監聽的Socket擴展單獨的線程...更不用說它圍繞性能的同步調用運行了很多時間。

令人回味的食物...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM