我找不到一个简单的例子,但我认为这是可能的。我打电话给一个方法。在该方法内部,它将循环多次,每个人都会循环遍历循环我想通知调用方法并在那里附加一个事件,所以我可以有一个状态栏来显示进度。
所以换句话说,我有一个带状态栏的Winform,在WinForm应用程序中我调用了一个方法。在该方法内循环迭代,我想以某种方式将该信息返回到WinForm应用程序,以便我可以更改状态栏。
if (fDialog.ShowDialog() == DialogResult.OK)
{
Session s = EncompassSession.Instance2(url, name, password);
DataTable dt = ExcelHelper.ReadAsDataTable(fDialog.FileName.ToString());
EncompassBoxHelper.UpdateBoxes(s, dt); //This is the main function that does the long process
s.End();
}
答案 0 :(得分:2)
有许多选项,但一个简单的选择是让您的方法将特殊的回调方法作为参数,然后在某些点调用该方法,提供上下文信息。
public void UpdateBoxes(Session s, DataTable dt, Action<ProgressInfo> updateProgress)
{
for (...)
{
...
updateProgress(new ProgressInfo(...));
}
}
然后可以调用这样的方法:
EncompassBoxHelper.UpdateBoxes(s, dt,
progress => UpdateProgressBar(progress));