提供された回答が私の要件を満たしていないため、私はイベントについていくつかの調査を行い、当初の方法で問題を解決しました。
ループを開始しているクラスでイベントを宣言しました。
public delegate void ProgressChangedEvHandler(int progress);
public event ProgressChangedEvHandler ProgressChanged;
private void OnProgressChanged(int progress)
{
var handler = ProgressChanged;
if (handler != null) handler(progress);
}
次に、ループ内からイベントを呼び出しました。
for (var index = 0; index < arrayListCount; index++)
{
var progress = (int) (100*(double) index/(double) arrayListCount);
OnProgressChanged(progress);
}
LoopClassInstance.ProgressChanged += LoopClassInstance_ProgressChanged;
次に、別のクラス(別のスレッド)にリスナー()を作成しました。
private void LoopClassInstance_ProgressChanged(int progress)
{
toolStripProgressBar1.Value = progress;
}