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