掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Backgroundworkerでデータセット取得について (ID:146924)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
魔界の仮面弁士さん ありがとうございます。 >この dTst は、他から利用される物ではありませんので、 >Form レベルのフィールド変数として宣言するのではなく、 >DoWork 内で Dim を使って宣言しましょう。メインスレッド側では、 >それを RunWorkerCompleted の e.Result 経由で受け取れます。 ご指摘ありがとうございます。 Form レベルで宣言していたら後述の Str_Sql と同じ事が 起こりうるからですね。 DoWork 内で Dim で宣言します。 >Str_Sql の宣言が無いことなどから、恐らくは、共通変数 Str_Sql を Set_SQL_01 内で >書き換えているのだと推測しますが、そのような設計は避けるべきです。 >たとえば、ワーカースレッド(DoWork)内で Str_Sql を操作している最中に、 >メインスレッド(Button_Click 等)でも Str_Sql が書き換えた場合、 >意図していた文字列とは異なる情報を受け取ってしまうかもしれません。 全くその通りです。 ワーカースレッドを後付けしたのに変更していませんでした。 変更します。 デバッグして分かったのですが、 Call BackgroundWorker1.RunWorkerAsync() で DoWork が実行されずに DataGridView1.DataSource = J20_DataSet.Tables("J20F") が実行されて DataGridView1 にデータが入っていないみたいです。 画面の現象を書いていませんでした。 申し訳ないです^^; フォーム起動後一回目に BtnHyouji_Click を実行したら 画面には何も表示されません(列ヘッダはJ20_DataSetのものが表示されています) 二回目以降は ボタンをクリックした直後に、データが表示されて 直ぐにデータが消えて最終的に画面にデータは表示されて いません。 もっと的確にコードを開示出来ればよいのですが、 どのコードが影響があるか分からないのが現状です。 かなり抽象的で申し訳ないのですが 何かお気づきになる点がございましたらアドバイス お願いします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.