我有 2 个视图模型 - 一个用于主程序,另一个用于我的用户控件。当我动态创建用户控件时,我启动后台线程:
private void BackgroundWorkerDoWork(object sender, DoWorkEventArgs eventArgs)
{
Dispatcher.CurrentDispatcher.Invoke(()=> CustomControl.ViewModel.InOperation = true);
while (!StopMeasuring)
{
//some action
}
}
InOperation 是我的 userControl viewModel 中的属性:
public virtual bool InOperation
{
get { return _inOperation; }
set
{
if (_inOperation==value) return;
_inOperation = value;
Dispatcher.CurrentDispatcher.Invoke(new Action(() =>
{
InOperationEvent(ControlId);
}));
}
}
我将 InOperationEvent 发送到我的主 viewModel :
public void OnUsercontrolInOperationChanged(int controlId)
{
Dispatcher.CurrentDispatcher.Invoke(() => {
foreach (var userControl in _allUserControls.Where(control => control.Name == _currentUcName))
{
switch (userControl.Name)
{
//switch cases
}
}
});}
在运行时,在我的主视图模型中的 foreach 循环中,我得到异常 -调用线程无法访问该对象,因为不同的线程拥有它
谁能指出我错在哪里?
提前谢谢