プロジェクトは .net 2.0 を対象としています。以下を使用して、新しいスレッドでメソッドをインスタンス化しています。
myThread = New Threading.Thread(AddressOf myClass.MyMethod)
myThread.Start()
サブはこんな感じです。
Sub myMethod()
Dim fs As New IO.FileInfo(sFile)
While Not DateDiff(DateInterval.Second,
dtCurrentTime, Now()) > iTimeOutInSeconds
fs.Refresh()
If fs.Exists Then
fs.Refresh()
If fs.Length > 0 AndAlso fs.Length = iGrowing Then
bFileExists = True
Exit While
End If
iGrowing = fs.Length
System.Threading.Thread.Sleep(1000)
End If
End While
End Sub
ファイルの成長が止まるまで待っています。問題は、次のようにメインスレッドから呼び出す場合です。
Call myClass.MyMethod()
正常に動作しており、プロセッサの電力はほとんど消費されていません。しかし、別のスレッドで呼び出すと、1 つのコア マシンまたはマルチコア マシンの 1 つのコアですべてのプロセッサ パワーが消費されます。プロセッサを追い越さずにその「遅延」を行う別の方法を知っている人はいますか?