我正在尝试向我的 UI 显示循环的内容。首先,我不确定我是否以正确的方式(使用 WinForms)来解决这个问题,但这就是我正在做的事情:
foreach (string item in stringArray)
{
Thread thread = new Thread(delegate()
{
UpdatedResultEvent(item);
});
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
}
我希望这是足够的信息,但如果不是,那么我将在这里更详细地介绍。
我有 2 个类,我的 Program.cs (WinForm) 和另一个名为 logicClass 的类。我将我的 Program 对象的一个实例传递给我的 logicClass。我的 logicClass 有一个委托,其签名与我的 Program 类中的方法匹配。作为委托传递的方法是
public void UpdateResultsOnScreen(string newContent)
{
txtResults.Text += newContent;
}
错误信息是
跨线程操作无效:控件从创建它的线程以外的线程访问
编辑
目标是,类似于进度条的工作方式,是看到控件实时更新。目前,即使它确实有效,线程也不会在线程完成之前将“结果”返回到屏幕。