16/09/22 23:06:35.01 P28LZX5F0.net
>>742
バグってるぞこれ
イベントハンドラを追加しっぱなしで削除してないから、PageLoadを呼ぶたびにイベントハンドラが増える
だからIsCompletedの条件を削除するとSetResultの2度目の呼び出しが発生してエラーになるはず
最後の馬鹿みたいな完了待ちループといい、これ書いた本人がTaskを正しく理解してないからこんなもん真似しちゃダメ
正しくはこんな風にする
private Task PageLoad(Uri uri) {
TaskCompletionSource<bool> pageLoaded = new TaskCompletionSource<bool>();
EventHandler handler = (s, e) => {
if (webBrowser1.ReadyState == WebBrowserReadyState.Complete) {
webBrowser1.DocumentCompleted -= handler;
pageLoaded.SetResult(true);
}
};
webBrowser1.DocumentCompleted += handler;
webBrowser1.Navigate(uri);
return pageLoaded.Task;
}