• ベストアンサー

処理の実行中にOutLookがまともに使用できない。

お世話になります。 ファイルからデータを取り出し1行1行処理を行っており、 時間がかかりますので、1行毎にProgressBarをカウントアップしています。 そして、例えば処理中にメールソフトのOutLookでメールの返信でもしようとすると、ロックがかかっているのか、返信ボタンすら押せません。 処理が終わると通常通り使用できます。 どなたか、処理中でプログレスバーのゲージが進んでいる最中でも、OutLookが使用できる方法を教えて頂けないでしょうか。 <処理中のプログレスバーの呼ぶ方法(カウントアップ)> frmProgress.NextStep frmProgress.Show vbModeless, Me <プログレスバー内でのカウントアップ> Public Sub NextStep() On Error Resume Next ' 画面を更新する m_lCounter = m_lCounter + 1 ProgressBar.Value = m_lCounter lblCounter.Caption = CStr(m_lCounter) lblCounter.Refresh DoEvents '画面を更新する lblCounterMax = "/" + CStr(m_lngShoriCounterMax) + "件目処理中" ProgressBar.Max = m_lngShoriCounterMax On Error GoTo 0 End Sub <環境> VB(SP6)

質問者が選んだベストアンサー

  • ベストアンサー
  • Bronco7
  • ベストアンサー率29% (150/511)
回答No.1

なんの処理中か分かりませんが その処理ソフトとOutlookは何か連携でもしているんですか? 連携しているなら、あきらめたほうが良いと思います。 連携していないなら、タスクマネージャでCPU占有率を確認してみては? その上で、処理ソフト側のCPU処理の優先順位を落とすとか Outlook側の処理を優先するようにするか PCの環境を増強しより高速な物に交換するしかないかと・・・

FirstOk
質問者

補足

回答して頂きまして、ありがとうございます。 特にOutlookとは連携しておりません。 そしてご指摘の通り、CPUが100%になっておりましたので、 API(SetPriorityClass)を使用して、このアプリの優先度を「低い」に 設定したのですが、やはり返信ボタンを押しても、返信画面が表示されませんでした。 これはシングルコアのCPUでは、しょうがないことなんでしょうか。 難しいですね。

その他の回答 (1)

  • ackapapa
  • ベストアンサー率44% (8/18)
回答No.2

動作が重くなる原因はプログレスバーに関する処理をしているからなのでしょうか? その処理をはずすと動作が軽くなりますか? >>ファイルからデータを取り出し1行1行処理を行っており、時間がかかりますので という言葉から、数百数千の処理をしていると推測します プログレスバーが問題なら captionのカウンタを1行ごとに プログレスバーのカウントを10行ごとに更新するよう にしてはどうでしょうか? また、NextStep()関数内で ProgressBar.Max = m_lngShoriCounterMax を毎回実行していますが、必要あるのでしょうか? 実行途中で最大値?が変化するのならば必要かと思いますが

FirstOk
質問者

補足

返事がおそくなりまして、申し訳ありません。 ご指摘頂いたようにしてみましたが、やはりダメでした。

関連するQ&A