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

わんくま同盟

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

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

■102572 / 2階層)  (追質)時間のかかる処理の進行の表示
□投稿者/ とっちゃん (796回)-(2023/11/19(Sun) 02:11:01)
No102567 (焼いも さん) に返信

最近この手のことは誰も書かないので、少し脱線気味な話になりますが
おそらく根本的であろう部分についてのお話を参考程度に。

.NET(Framework も Core も同様)に限らず、Windows のGUIアプリは画面表示に
関わる処理は、原則 UIスレッド上で行う必要があります。

また、アプリが応答なしにならないようにするには、UIスレッドが常に反応できる状態に
しておく必要があります。

UIスレッドって何?というのはあると思いますが、とりあえず今は
「GUIアプリのUIスレッドは、メインスレッドのこと」と覚えておけばいいでしょう。

UIスレッド自体はメインスレッド以外でもなり得るのですが、多くの場合メインスレッド以外で
UIスレッドを作ることも使うこともないので。

今回解決するべき部分は、UIスレッドが常に反応できる状態というのがどういうことか?というところになります。
言い方を変えると、レスポンスが良い(反応がよい)アプリを作るための基礎の部分でです。


ちょっと古い記事ですが、ざっくりとしているものの重要な点は
一通り網羅してるのでこの辺りの記事を一度読んでおくと良いと思います。

https://atmarkit.itmedia.co.jp/fdotnet/chushin/masterasync_01/masterasync_01_01.html


そのうえで、こちらの「高度な .NET プログラミングのドキュメント」から
「非同期プログラミング(主にTAP)」と、「並列プログラミング」を学習していくとよいでしょう。

https://learn.microsoft.com/ja-jp/dotnet/navigate/advanced-programming/?WT.mc_id=DT-MVP-32182

「高度な」とあるように、どちらの内容も基本的な部分が出来ていないとわからないところが多いと思います。

なお、どちらもマルチスレッドプログラミングですが
「非同期プログラミング」は、主にUIスレッドの応答性を高めるための技術(レスポンスの向上)
「並列プログラミング」は、高速化のための技術(パフォーマンスの向上)になります。

編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[1]: (追質)時間のかかる処理の進行の表示 /魔界の仮面弁士 →Re[3]: (追質)時間のかかる処理の進行の表示 /焼いも
 
上記関連ツリー

(追質)時間のかかる処理の進行の表示 / 焼いも (23/11/17(Fri) 18:27) #102556
Re[1]: (追質)時間のかかる処理の進行の表示 / とっちゃん (23/11/17(Fri) 20:50) #102557
│├ Re[2]: (追質)時間のかかる処理の進行の表示 / 焼いも (23/11/18(Sat) 10:24) #102559
│└ Re[2]: (追質)時間のかかる処理の進行の表示 / WebSurfer (23/11/18(Sat) 15:04) #102562
Re[1]: (追質)時間のかかる処理の進行の表示 / 魔界の仮面弁士 (23/11/17(Fri) 20:56) #102558
  ├ Re[2]: (追質)時間のかかる処理の進行の表示 / 焼いも (23/11/18(Sat) 10:40) #102560
  │└ Re[3]: (追質)時間のかかる処理の進行の表示 / WebSurfer (23/11/18(Sat) 12:05) #102561
  │  └ Re[4]: (追質)時間のかかる処理の進行の表示 / 焼いも (23/11/18(Sat) 15:29) #102563
  │    └ Re[5]: (追質)時間のかかる処理の進行の表示 / WebSurfer (23/11/18(Sat) 15:52) #102564
  │      └ Re[6]: (追質)時間のかかる処理の進行の表示 / 焼いも (23/11/18(Sat) 20:07) #102567
  │        └ Re[7]: (追質)時間のかかる処理の進行の表示 / WebSurfer (23/11/19(Sun) 10:22) #102574
  │          └ Re[8]: (追質)時間のかかる処理の進行の表示 / 焼いも (23/11/20(Mon) 00:00) #102578
  │            └ Re[9]: (追質)時間のかかる処理の進行の表示 / WebSurfer (23/11/20(Mon) 09:06) #102582
  │              └ Re[10]: (追質)時間のかかる処理の進行の表示 / 焼いも (23/11/20(Mon) 15:45) #102583
  │                └ Re[11]: (追質)時間のかかる処理の進行の表示 / WebSurfer (23/11/20(Mon) 17:13) #102585
  │                  └ Re[12]: (追質)時間のかかる処理の進行の表示 / 焼いも (23/11/21(Tue) 00:59) #102588
  └ (追質)時間のかかる処理の進行の表示 / とっちゃん (23/11/19(Sun) 02:11) #102572 ←Now
    └ Re[3]: (追質)時間のかかる処理の進行の表示 / 焼いも (23/11/20(Mon) 00:07) #102579
      └ Re[4]: (追質)時間のかかる処理の進行の表示 / とっちゃん (23/11/20(Mon) 01:48) #102581
        └ Re[5]: (追質)時間のかかる処理の進行の表示 / 焼いも (23/11/20(Mon) 15:47) #102584
          └ Re[6]: (追質)時間のかかる処理の進行の表示 / とっちゃん (23/11/20(Mon) 17:37) #102586
            └ Re[7]: (追質)時間のかかる処理の進行の表示 / 焼いも (23/11/21(Tue) 00:53) #102587 解決済み
              └ Re[8]: (追質)時間のかかる処理の進行の表示 / WebSurfer (23/11/21(Tue) 18:07) #102589 解決済み

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信