2017-03-17 3 views
0

私はC#でWindows 10 uwpアプリケーションを持っています。ある方法では、私は文字列のリストをチェックします。私のリストに1つのアイテムしかない場合、私たちは良いです。しかし、複数の項目がある場合、ユーザーが複数の列から1つの文字列を選択できるように、ListViewをポップアップします。それらを選択すると、ListView_SelectionChangedイベントが発生し、選択した文字列を取得できます。しかし、それは明らかに呼び出し元とは異なるメソッド/イベントです。ListViewからSelectionChangedイベントが発生するまでメソッド内で実行を一時停止します

問題は、呼び出しメソッドが実行を一時停止し、ユーザーがリストビューから文字列を選択するまで待機することです。彼らが1つを選択した後、私は呼び出し元で実行を続行する必要があります。私はこれが過去にwhileループとフラグで行われたことを知っていますが、これはブロックしています。私はそれがブロックされているが、非同期/待機と他の新しいフレームワーク機能では必ずしも気にする必要はありません、私は良い方法があると確信していますか?

ありがとうございます!

+0

無効な署名を持つイベントハンドラでは、実行を一時停止することはできません。タスクに変更することはできないので、非同期フローをサポートしていません。 – Sievajet

答えて

0

私は誤って同じ質問を別の方法で2回尋ねたと思います。そのために私は謝罪します。私はまだ解決していない答えでこの問題の解決策を探していたと思います。私は再び投稿しました。

私は最終的に私のために働く解決策を思いつき、共有したいと思いました。私は既に私の他の質問に答えていますので、ここにリンクがあります。

My answer on the other post

は、この情報がお役に立てば幸い!

0

ノンブロッキングソリューションが必要な場合は、async/awaitを実装する必要があります。 実行時にawaitキーワードが検出されると、呼び出し元に制御が返されます。ユーザーがListViewコントロールから値を選択すると、待機中の演算子で再開します。

さらに詳しい情報はAsynchronous Programming with async and await (C#)にあります。

関連する問題