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

わんくま同盟

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

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

■92316 / 3階層)  スレッドをタスクで書くには
□投稿者/ 魔界の仮面弁士 (2369回)-(2019/09/10(Tue) 16:09:35)
No92303 (TanuTanu さん) に返信
> 実施したい内容は、下記となります。
No92302 で指摘した .Rows.Count の状態はどうでしたか?


> CSV書き込みに数秒ほど遅れる時があるのでワーカースレッドで処理させようという目論見です。
であればフィールド変数を共用するのではなく、
ワーカースレッドを呼び出す際に、パラメーターとして
「DataSetのコピー」を渡すようにした方が安全かと思います。

もしもその DataSet を DataGridView 等にバインドしている場合には、
必ずしもスレッドセーフではなくなります。たとえば列ヘッダーのクリックや
セル編集などといった操作によって、DataSet の状態が変更される可能性があるためです。


> この処理をしている時は複数のスレッドから同時に読み書きが行われる事はありません。
複数のスレッドから同時に読み込むのであれば OK ですが、
いずれかのスレッドが書き込み中は、それを他のスレッドから読み込む事も書き込むことも NG ですね。

DataSet をフィールド変数として共有するのであれば、
「DataSet が編集中」であることを保証する仕組みを設けた上で、
編集中は読み取りできないことを保証するコードを設けた方が安全です。
編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[2]: スレッドをタスクで書くには /TanuTanu →Re[4]: スレッドをタスクで書くには /TanuTanu
 
上記関連ツリー

スレッドをタスクで書くには / TanuTanu (19/09/10(Tue) 11:53) #92298
Re[1]: スレッドをタスクで書くには / WebSurfer (19/09/10(Tue) 12:51) #92299
│└ Re[2]: スレッドをタスクで書くには / TanuTanu (19/09/10(Tue) 14:00) #92301
│  ├ Re[3]: スレッドをタスクで書くには / 魔界の仮面弁士 (19/09/10(Tue) 14:12) #92302
│  └ Re[3]: スレッドをタスクで書くには / WebSurfer (19/09/10(Tue) 14:30) #92304
│    └ Re[4]: スレッドをタスクで書くには / WebSurfer (19/09/10(Tue) 14:52) #92305
Re[1]: スレッドをタスクで書くには / 魔界の仮面弁士 (19/09/10(Tue) 13:35) #92300
  └ Re[2]: スレッドをタスクで書くには / TanuTanu (19/09/10(Tue) 14:28) #92303
    ├ Re[3]: スレッドをタスクで書くには / TanuTanu (19/09/10(Tue) 15:24) #92308
    │└ Re[4]: スレッドをタスクで書くには / WebSurfer (19/09/10(Tue) 15:50) #92313
    └ スレッドをタスクで書くには / 魔界の仮面弁士 (19/09/10(Tue) 16:09) #92316 ←Now
      └ Re[4]: スレッドをタスクで書くには / TanuTanu (19/09/10(Tue) 16:41) #92322
        └ Re[5]: スレッドをタスクで書くには / 魔界の仮面弁士 (19/09/10(Tue) 17:01) #92324
          └ Re[6]: スレッドをタスクで書くには / TanuTanu (19/09/10(Tue) 18:55) #92328
            └ Re[7]: スレッドをタスクで書くには / 魔界の仮面弁士 (19/09/10(Tue) 20:36) #92329
              └ Re[8]: スレッドをタスクで書くには / TanuTanu (19/09/10(Tue) 23:37) #92330 解決済み
                ├ Re[9]: スレッドをタスクで書くには / WebSurfer (19/09/11(Wed) 10:43) #92337
                └ Re[9]: スレッドをタスクで書くには / WebSurfer (19/09/11(Wed) 13:00) #92342

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