エクスポート (0) 印刷
すべて展開
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

Thread.IsBackground プロパティ

2013/12/12

スレッドがバックグラウンド スレッドかどうかを示す値を取得または設定します。

Namespace:  System.Threading
アセンブリ:  mscorlib (mscorlib.dll 内)

public bool IsBackground { get; set; }

プロパティ値

型: System.Boolean
このスレッドがバックグラウンド スレッドである、またはそうなる予定である場合は true、それ以外の場合は false

例外条件
ThreadStateException

スレッドの実行が終了しました。

スレッドは、バックグラウンド スレッドかフォアグラウンド スレッドのいずれかになります。Windows Phone では、この 2 つの間に動作の違いはありません。

次の例は、フォアグラウンド スレッドおよびバックグラウンド スレッドの開始方法を示しています。この例では、Thread(ParameterizedThreadStart) コンストラクターを使用して、2 つのスレッドを作成しています。一方はフォアグラウンド スレッド (既定) として実行し、もう一方は、IsBackground プロパティを true に設定することによってバックグラウンド スレッドに変更します。また、QueueUserWorkItem メソッドを呼び出すことによって、スレッド プールのスレッドを開始します。スレッド プールのスレッドはバックグラウンド スレッドです。

3 つのスレッドからは、いずれも、IsBackground プロパティの値が表示されます。

メモメモ:

この例を実行するには、「Windows Phone での静的 TextBlock コントロールのあるコード例のビルド」を参照してください。


using System;
using System.Threading;
using System.Windows.Input;

public class Example
{
   private static System.Windows.Controls.TextBlock outputBlock;

   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      Example.outputBlock = outputBlock;
      outputBlock.Text = "Click here to begin the demo.\n";

      outputBlock.MouseLeftButtonUp += new MouseButtonEventHandler(MouseUp);
   }

   private static void MouseUp(object sender, System.Windows.Input.MouseButtonEventArgs e)
   {
      outputBlock.MouseLeftButtonUp -= new MouseButtonEventHandler(MouseUp);
      outputBlock.Text = "To run the demo again, refresh the page.\n\n";

      Thread backgroundThread = new Thread(RunLoop);
      backgroundThread.Name = "BackgroundThread";
      backgroundThread.IsBackground = true;
      backgroundThread.Start(null);

      Thread foregroundThread = new Thread(RunLoop);
      foregroundThread.Name = "ForegroundThread";
      foregroundThread.Start(null);

      ThreadPool.QueueUserWorkItem(RunLoop);
   }

   private static void RunLoop(object state)
   {
      string threadName = Thread.CurrentThread.Name;
      if (threadName==null) {threadName = "<ThreadPool thread>";}

      outputBlock.Dispatcher.BeginInvoke(displayHelper, 
         String.Format("{0} is running. IsBackground = {1}\n", 
                       threadName, Thread.CurrentThread.IsBackground));
   }

   // In order to update the TextBlock object, which is on the UI thread, you must
   // make a cross-thread call by using the Dispatcher object that is associated 
   // with the TextBlock. The DisplayOutput helper method and its delegate, 
   // displayHelper, are used by the BeginInvoke method of the Dispatcher object
   // to append text to the TextBlock. 
   //
   private static Action<string> displayHelper = new Action<string>(DisplayOutput);
   private static void DisplayOutput(string msg)
   {
      outputBlock.Text += msg;
   }
}

/* This example produces output similar to the following:

BackgroundThread is running. IsBackground = True.
ForegroundThread is running. IsBackground = False.
<ThreadPool thread> is running. IsBackground = True.
 */


Windows Phone OS

サポート: 8.0, 7.1, 7.0

表示:
© 2014 Microsoft