本文為機器翻譯文章。如需檢視英文版,請選取 [原文] 核取方塊。您也可以將滑鼠指標移到文字上,即可在快顯視窗顯示英文原文。
譯文
原文

ActionBlock<TInput>.Complete 方法 ()

 

發出訊號給資料流程區塊,它不應該接受或產生其他任何訊息,並不應該使用任何多延後的訊息。

命名空間:   System.Threading.Tasks.Dataflow
組件:  System.Threading.Tasks.Dataflow (於 System.Threading.Tasks.Dataflow.dll)

public void Complete()

之後 Complete 已經在資料流程區塊上呼叫,該區塊將會完成 (使其 Completion 工作會進入最終狀態) 它已經處理所有先前可用的資料之後。 這個方法不會封鎖等候完成發生,但會起始要求。 若要等候作業完成,請使用 Completion 屬性。

下列範例示範使用 Complete 方法來通知資料流程區塊,它不應該接受或產生更多的訊息,也不使用任何多延後的訊息。 這個程式碼範例會提供範例的一部分 How to: Specify the Degree of Parallelism in a Dataflow Block 主題。

// Performs several computations by using dataflow and returns the elapsed
// time required to perform the computations.
static TimeSpan TimeDataflowComputations(int maxDegreeOfParallelism,
   int messageCount)
{
   // Create an ActionBlock<int> that performs some work.
   var workerBlock = new ActionBlock<int>(
      // Simulate work by suspending the current thread.
      millisecondsTimeout => Thread.Sleep(millisecondsTimeout),
      // Specify a maximum degree of parallelism.
      new ExecutionDataflowBlockOptions
      {
         MaxDegreeOfParallelism = maxDegreeOfParallelism
      });

   // Compute the time that it takes for several messages to 
   // flow through the dataflow block.

   Stopwatch stopwatch = new Stopwatch();
   stopwatch.Start();

   for (int i = 0; i < messageCount; i++)
   {
      workerBlock.Post(1000);
   }
   workerBlock.Complete();

   // Wait for all messages to propagate through the network.
   workerBlock.Completion.Wait();

   // Stop the timer and return the elapsed number of milliseconds.
   stopwatch.Stop();
   return stopwatch.Elapsed;
}
回到頁首
顯示: