dポイントプレゼントキャンペーン実施中!

お世話になります。

ファイルからデータを取り出し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)

A 回答 (2件)

なんの処理中か分かりませんが


その処理ソフトとOutlookは何か連携でもしているんですか?
連携しているなら、あきらめたほうが良いと思います。

連携していないなら、タスクマネージャでCPU占有率を確認してみては?

その上で、処理ソフト側のCPU処理の優先順位を落とすとか
Outlook側の処理を優先するようにするか
PCの環境を増強しより高速な物に交換するしかないかと・・・

この回答への補足

回答して頂きまして、ありがとうございます。
特にOutlookとは連携しておりません。

そしてご指摘の通り、CPUが100%になっておりましたので、
API(SetPriorityClass)を使用して、このアプリの優先度を「低い」に
設定したのですが、やはり返信ボタンを押しても、返信画面が表示されませんでした。

これはシングルコアのCPUでは、しょうがないことなんでしょうか。
難しいですね。

補足日時:2006/08/24 10:41
    • good
    • 0

動作が重くなる原因はプログレスバーに関する処理をしているからなのでしょうか?


その処理をはずすと動作が軽くなりますか?

>>ファイルからデータを取り出し1行1行処理を行っており、時間がかかりますので
という言葉から、数百数千の処理をしていると推測します

プログレスバーが問題なら
captionのカウンタを1行ごとに
プログレスバーのカウントを10行ごとに更新するよう
にしてはどうでしょうか?

また、NextStep()関数内で
ProgressBar.Max = m_lngShoriCounterMax
を毎回実行していますが、必要あるのでしょうか?
実行途中で最大値?が変化するのならば必要かと思いますが

この回答への補足

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

補足日時:2006/08/28 17:58
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています