この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 19083|答える: 0

[出典] ThreadStartとParameterizedThreadStartは異なります

[リンクをコピー]
掲載地 2016/11/14 10:25:44 | | |
ThreadStart:

ThreadStartのデリゲートはvoid ThreadStart()として定義されており、実行されるメソッドにはパラメータがありません。
ThreadStart threadStart=新しいThreadStart(計算);
スレッド thread=新しいスレッド(threadStart);
スレッド。 Start();
パブリック・ヴォイド Calculate()
   {
二重直径=0.5;
Console.Write(「直径{0}の円の面積は{1}」直径、直径×数学・PI);
   }
       ここでは、ThreadStart型を定義するデリゲートを使い、スレッドが実行すべきメソッドを定義します:直径0.5の円周を計算し出力するCalculateです。 これはマルチスレッドの最も単純な例であり、多くの場合それで十分です




ParameterThreadStart:
ParameterThreadStartはvoidのParameterizedThreadStart(オブジェクト状態)として定義されており、このデリゲートを使って定義されたスレッドの起動関数は、例えば以下の入力パラメータを受け入れることができます。



ParameterizedThreadStart threadStart=new ParameterizedThreadStart(計算)
スレッドスレッド=新しいスレッド() ;
スレッド。 スタート(0.9);
public void Calculate(object arg)
{
ダブル直径=ダブル(arg);
Console.Write(「直径{0}の円の面積は{1}」直径、直径×数学・PI);
}

計算メソッドはパラメータ の 型 オブジェクトを持っていますが、パラメータは1つしかなく、これもオブジェクト型であり、使用時には変換が必要です。しかし幸いにもパラメータは存在し、複数のパラメータをクラスにまとめ、そのインスタンスをパラメータとして渡すことで、複数のパラメータ転送を実現できます。 たとえば:





クラスAddParams
{
    パブリック・インテリットA、B;

    public AddParams(int numb1, int numb2)
    {
      a = numb1;
      b = numb²;
    }
}
#endregion

クラスプログラム
{
    static void Main(string[] args)
    {
      Console.WriteLine("***** Threadオブジェクトで追加*****");
      Console.WriteLine("Main(): {0} in thread in thread(): ",
        Thread.CurrentThread.ManagedThreadId);

      AddParams ap = 新しいAddParams(10, 10);
      スレッド t = 新しいスレッド(new ParameterizedThreadStart(Add));
      t.スタート(ap);
      Console.ReadLine();
    }

    #region 加算法
    static void Add(オブジェクトデータ)
    {
      もし(データがAddParamsである場合)
      {
        Console.WriteLine("Main(): {0} in thread in thread(): ",
          Thread.CurrentThread.ManagedThreadId);

        AddParams ap = (AddParams)data;
        Console.WriteLine("{0} + {1} is {2}",
          AP.A、AP.B、AP.A + AP.B);
      }
    }
    #endregion
}
}




先の:.net/c# ユーザーアバターをクロールし、QQアバターを取得
次に:.net/c#は運転手の車の年齢を計算します
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com