public CancellationTokenSource cancellationToken = new CancellationTokenSource();
public FrmEquipmentReturn()
{
InitializeComponent();
//允许跨线程访问控件
Control.CheckForIllegalCrossThreadCalls = false;
}
private void btnOK_Click_1(object sender, EventArgs e)
{
//开始监听格子状态
Task.Factory.StartNew(RefreshLockStatus, cancellationToken.Token);
}
private void RefreshLockStatus()
{
while (!cancellationToken.IsCancellationRequested)
{
try
{
if (FrmBase.isConnected)
{
RefreshetUserGridViewStatus();
}
}
catch (Exception ex)
{
cancellationToken.Cancel();
Thread.Sleep(1000);
}
}
}
/// <summary>
/// 刷新锁状态显示
/// </summary>
private void RefreshetUserGridViewStatus()
{
//关闭询问窗口
Program._formHelper.frmReturn.FrmHide();
cancellationToken.Cancel();
}
在控件初始化后写上下面这行代码,即可跨线程执行控件事件
Control.CheckForIllegalCrossThreadCalls = false;