2023/03/11

WebView2のSourceプロパティ

 懸命にアイビー先生(BingのAI検索なのかな)に質問し、WebView2の実装時の再確認してました。まあ、そもそもWebView2コントロールも理解せず、C#の理解もまだまだな状態で進めてますので何が良くて何が間違ってるとかの理解が無いまま、猿真似でコーディングしてますが😅、フォームのデザインから見直しして作り直し。

ここまでポップアップする入出金時の部分をWebView2を2つ用意して、フォームに2つ並べておいたのですが、これを同じ位置に重ねておき、ポップアップ時に2つ目のVisibleをTrueにして終わったらまたFalseにしてフォームのサイズダウンをした。更にどこぞのサイトのSourceプロパティにデザイン時に設定しておくと出来ない事がある的なのが頭の片隅に残ってたので、この対処も含めフォームの根本的な作り直し。で、ついでにだらだと書いてたプロセスも子プロセスにして視認性の向上をしてみた。で、この際にここまでの間違いも発見。どこのサイトを参考に書いたかはもう覚えてないけど、

  1. webView2.CoreWebView2.ExecuteScriptAsync($"...");
  2. await Task.Run(async () =>;
  3. {
  4. // 読み込み完了まで待機
  5. if (condition2.Wait(wait_time))
  6. timeout_err = false;
  7. else
  8. timeout_err = true;
  9. });

としてたんですが、"Task.Run(async () =>"ではなく"Task.Run( () =>"にする。更に、ExecuteScrriptAsyncの行にもawaitをつけてみた。つまり、

  1. await webView2.CoreWebView2.ExecuteScriptAsync($"...");
  2. await Task.Run(() =>;
  3. {
  4. // 読み込み完了まで待機
  5. if (condition2.Wait(wait_time))
  6. timeout_err = false;
  7. else
  8. timeout_err = true;
  9. });

って感じです。で、子プロセス化する際に

  1. private async Task<bool> Child_Process()
  2. {
  3. bool timeout_err = false;
  4. //ここにExecuteScriptAsyncとTask.Run()を
  5. return timeout_err;
  6. }

って感じに書き直しました。呼び出し側は、

  1. Task<bool> taskChild_Process = Child_Process();
  2. timeout_err = await taskChild_Process;
  3. if (!timeout_err)
  4. {
  5. // 続行する処理
  6. }

としてみた。

0 件のコメント:

コメントを投稿