C# WinForms线程调用处理
此代码是从创建它的线程以外的其他线程运行的。C# WinForms线程调用处理,c#,multithreading,winforms,C#,Multithreading,Winforms,此代码是从创建它的线程以外的其他线程运行的。 线程从StartScanning public StartScanning() { InitializeComponent(); Thread _IMSS_THREAD = new Thread(_IMSS_START_SCANNING); _IMSS_THREAD.IsBackground = true; _IMSS_THREAD.Start(); } 主要形式 StartScanning _IMSS_START
线程从
StartScanning
public StartScanning()
{
InitializeComponent();
Thread _IMSS_THREAD = new Thread(_IMSS_START_SCANNING);
_IMSS_THREAD.IsBackground = true;
_IMSS_THREAD.Start();
}
主要形式
StartScanning _IMSS_START_SCANNING = StartScanning._IMSS_CREATE_CONTROLE();
_IMSS_START_SCANNING._IMSS_ON_ALL_SCAN_COMPLETE += _IMSS_ON_SCAN_COMPLETE;
this._IMSS_MainPanel.Controls.Add(_IMSS_START_SCANNING);
扫描完整的用户控件时,此代码的主要形式为:
ScanComplete _IMSS_ON_COMPLETE = new ScanComplete();
public void _IMSS_ON_SCAN_COMPLETE(ref List<BetterListViewGroup> _IMSS_LIST_OF_GROUP_TARGETS)
{
List<BetterListViewGroup> IMSS_LIST_OF_GROUP_TARGETS = _IMSS_LIST_OF_GROUP_TARGETS;
_IMSS_ON_COMPLETE._IMSS_AddRangeTargets(ref IMSS_LIST_OF_GROUP_TARGETS);
this.Invoke(new MethodInvoker(() =>
{
this._IMSS_MainPanel.Controls.Clear();
this._IMSS_MainPanel.Controls.Add(_IMSS_ON_COMPLETE);
}));
}
在主线程上创建(它是全局的)并在使用
_IMSS_ON_COMPLETE._IMSS_AddRangeTargets(ref IMSS_LIST_OF_GROUP_TARGETS);
它向列表中添加了一组
listview
,它不在invoke部分,但它没有抛出线程错误,为什么它没有抛出错误?在表单的构造函数中尝试以下操作:
public StartScanning()
{
InitializeComponent();
StartScanning.CheckForIllegalCrossThreadCalls = false;
}
请记住,这不是正确的方法,但这将帮助您解决问题。搜索线程安全调用和最相关的:WinForms、WPF、其他?Windows窗体应用程序在哪里创建这些线程?我没看见
public StartScanning()
{
InitializeComponent();
StartScanning.CheckForIllegalCrossThreadCalls = false;
}