2016-10-02 5 views
1

私が知る限り、非同期メソッドを呼び出す3つの方法があります。 (私は確信してありますはるか)違いは何ですか?Task.Run()、Xamarinフォームで非同期void AAA()を呼び出しますか?

  • 1>ただ、

    async void AAA() 
    { 
    ... 
    } 
    
    • 3のようにAAA();

    とAAAがあるべきルックスを呼び出すTask.Run(async() = {...}).

  • 2>>Device.InvokeMainThread(async() => {...});

私が知っているオプション1(Task.run)を使用すると、プロセスはバックグラウンドスレッドになり、オプション3は実行されません。

オプション2はどうですか?私がOnAppearing()から電話をかけた場合、それはメインスレッドにありますか?
まず、そのような使用に問題はありませんか?

オプション2と3は同じですか?

答えて

2
  1. スレッドプールスレッドでAAAを実行します。
  2. 呼び出しスレッドでAAAを実行します。
  3. メインスレッドでAAAを実行します。

脇に、avoid async void methodsです。

+0

ありがとうございます。本当に役に立ちます。 –

関連する問題