質問編集履歴

1

k47

k47 score 10

2016/09/03 21:32  投稿

Vb.Net Application.DoEventsとマルチスレッドについて
現在、WindowsServer2008で、VB.NETで作成した以下のシステム(exe)を起動しています。
1.Oracle11gからデータを取得してテキストに出力するシステム
2.テキストから取得したデータをOracle11gに登録するシステム
3.Oracle11gからデータを取得してラベルプリンタ(レスプリ)からラベルを出力するシステム
1と2についてはそれぞれ1つのプロセスとして起動していますが、
3に関しては一つのexeでプリンタ台数分起動します。(プロセスが8あります)
上記のシステムは全て起動している状態で、タイマーを使用して定期的に処理が実装されます。
時間間隔はそれぞれ異なります。
問題は、3のシステムでラベルが出てこないという現象が発生していることです。
それも常にではなく、2の処理が重くなる時間帯に発生しているようなのですが、
2の処理が重い場合(画面が応答なしになるような)、1や3の処理に影響が出るのでしょうか?
自分の中では別のプロセスで動いている以上、それぞれ別で処理されると考えていたのですが、
この考えは間違っているのでしょうか?
それぞれのシステムは、タイマーで指定時間になった時、
タイマー停止→処理開始→タイマー開始
の順になっています。処理が終了しないとタイマーは開始しない状態です。
ラベルが出てこないという現象を回避するために、DoEventsの処理を組み込んだ場合、
それぞれのシステムに影響があるのでしょうか?
DoEventsを調べたりすると、マルチスレッドにする方がいいと書かれている記事が目に留まるのですが、マルチスレッドにした方がいいのでしょうか?
質問が的を射てないかもしれませんが、よろしくお願いします。
言語:VB2010
言語:VB2010
-追記(問題ほぼ解決)-
回答頂きありがとうございました。
上記の問題、別に原因がありました。
3の処理で、印刷データをDBから取得し、印刷後、同じデータを印刷しないように印刷済みとして更新しているのですが、この時のデータ特定の条件が甘く、複数件更新してしまっていました。
この為印刷されないデータが発生していました。
1ヶ月程稼動していて顕著に現象が出たのはこれが初めてで、システムの更新をした直後だったので変更した部分が原因だと思っていたのですが、今回の現象はいつ起きてもおかしくなかった事でした。
問題は自己解決ですが、聞きたかったDoEventsとマルチスレッドについて回答していただいた方をベストアンサーとさせて頂きました。
ありがとうございました。
  • VB.NET

    1140 questions

    Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る