C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 【C#】Dispatcherの書き方について


(過去ログ 169 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■97439 / inTopicNo.1)  【C#】Dispatcherの書き方について
  
□投稿者/ てす (1回)-(2021/05/14(Fri) 09:18:58)

分類:[.NET 全般] 

2021/05/14(Fri) 09:24:30 編集(投稿者)
VS2019

Application.Currentがnullだったらそのまま処理Aをコール。
Application.Currentがnullでない場合、ディスパッチャから処理Aをコール。

このような処理をそのまま書くと以下のようになるのですが、
もっとすっきりとした書き方にはなりませんでしょうか。
※処理Aは一回書くだけにしたい。


if (Application.Current == null)
{
    処理A;
}
else
{
     Application.Current.Dispatcher.BeginInvoke(new Action(() =>
    {
        処理A;
    }));
}

引用返信 編集キー/
■97440 / inTopicNo.2)  Re[1]: 【C#】Dispatcherの書き方について
□投稿者/ Hongliang (1173回)-(2021/05/14(Fri) 09:38:04)
ローカル関数はどうでしょうか?

private void Test() {
    int hoge = 5;
    if (Application.Current == null) {
        ProcA();
    } else {
        Application.Current.Dispatcher.BeginInvoke(new Action(ProcA));
    }

    void ProcA() {
        処理A;
        Trace.WriteLine(hoge); // ローカル変数のキャプチャも可能
    }
}

引用返信 編集キー/
■97441 / inTopicNo.3)  Re[2]: 【C#】Dispatcherの書き方について
□投稿者/ てす (2回)-(2021/05/14(Fri) 09:56:27)
> 
> private void Test() {
>     int hoge = 5;
>     if (Application.Current == null) {
>         ProcA();
>     } else {
>         Application.Current.Dispatcher.BeginInvoke(new Action(ProcA));
>     }
> 
>     void ProcA() {
>         処理A;
>         Trace.WriteLine(hoge); // ローカル変数のキャプチャも可能
>     }
> }

ご返信ありがとうございます。
たしかに処理Aは一箇所だけになりましたが、
ProcAは二箇所ですので、ここを一箇所にできればいいのですが・・・。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -