| 
                 分類:[C#] 
 
 Visual Studio 2012 + .NET Framework 4.5 で C# を使用しています。
.NETのバージョンを4.5に挙げたのは最近なのでC# 5.0について勉強しつつ
業務でC#コードをいじっている者です。はじめまして。
本日思い切ってこちらの C# wizard な方々に質問させていただくのは
delegate 登録された複数の method を非同期で呼び出す方法
を探しているためです。
サンプルですが以下のようなことをしたいです。
(説明に関係ない部分は省略しています)
public class Sample
{
    // 複数のclassからmethodが登録されている状態
    // 登録されるmethodは互いに干渉し合わない重い処理
    public Action<string> Work;
    private bool SampleWork(string input)
    {
        // いろいろな処理を同期実行した後に
        if(Work != null)
        {
            // 登録された method 全部を呼び出す
            Work(input);
        }
    }
}
class A
{
    void Work(string input)
    {
         // 重い処理の例として
         Random random = new Random((int)(DateTime.Now.Ticks % Int32.MaxValue));
         while(random.Next() != input.Length) { };
    }
}
class B
{
    void Work(string input) { /* 何か重い処理 */ }
}
class C
{
    void Work(string input) { /* 何か重い処理 */ }
}
例えば上記class SampleのWorkに
class A, class B, class CのWorkが登録されていた場合
単純にWorkを呼び出すだけでは
A.Work → B.Work → C.Work (順不問)
と同期で呼び出されると思っています。
私がやりたいのは
A.Work, B.Work, C.Work を同時にキックしたい
(A.Workの処理完了を待たずにB.WorkやC.Workの処理を開始したい)
ということです。
私が担当するのはclass Sampleのみなので
class A, class B, class Cはできれば変更したくありません。
(他に手がないのであれば, いじれなくはありません)
また態々WorkerThreadを使うほどでもない気がしています.
async, awaitというキーワードの説明を読んでみたのですが
例がbutton_Clickedイベントの処理のせいか
上記でどう使えば良いのか/使えるのか判断が付きませんでした。
お手数をおかけしますが
ご助言頂きたくよろしくお願いいたします。
  |