[C#] 纯文本查看 复制代码 /// <summary>
/// 线程工作方法
/// </summary>
/// <param name="x"></param>
public void queueWorkItem(object x , int row)
{
var user = x as User;
this.managementControl.BeginInvoke(updateVariable,new object[] { "account","result",row,"测试" });
}
public delegate void updateDelegate(string tag, string column, int row, string text);
private updateDelegate updateVariable;
private void update(string tag , string column , int row , string text) {
foreach (DataGridView grid in grids)
{
grid.BeginInvoke(new Action(() =>
{
string accessibleName = grid.AccessibleName;
if (accessibleName.Equals(tag, StringComparison.InvariantCultureIgnoreCase))
{
grid.Rows[row].Cells[column].Value = text;
grid.Refresh();
}
}));
}
}
是这么回事,ManagementControl里装有AccountControl、OrderControl、ProfileControl、SettingControl,我在ManagementControl里创建多线程,进入线程的执行方法里我需要改变一下状态,显示到AccountControl和ProfileControl里的datagridview中去,最上方帖的是我现在的代码,在执行调试后,ui界面假死,输出currentThread的name是空白的,但是在更新前我输出的是我这个多线程的name,也就是一进入beginInvoke里之后,currentThread就不知道是哪个了,调用关系有点绕,就是说我在多线程里要更新AccountControl里的datagridview的值,但AccountControl在ManagementControl里,而ManagementControl在frmMain里。
该怎么解决,求帮忙。
|