我有一个WPF应用程序,当用户点击按钮时调用dll。这个dll做了很长时间的操作,但是当它这样做时,我无法与MainWindow交互,例如向下滚动Datagrid记录一些更新消息,切换标签等。
如何在dll运行时保持MainWindow被激活?我想到了一个BackgroundWorker,它会在.Activate()
出现时不断调用Window.Deactivated
方法,但是这不会耗费大量资源,并且会减慢已经花费大量时间的其他dll的速度吗? / p>
我在等待建议:) 谢谢
答案 0 :(得分:1)
看起来你正在UI线程中运行那个冗长的操作。尝试在单独的线程中运行它。
private void Button_Click(object sender, RoutedEventArgs e)
{
Task.Factory.StartNew(CallLengthyDllMethod);
}
private void CallLengthyDllMethod()
{
Thread.Sleep(10000); // simulating lengthy operations
MessageBox.Show("Done!");
}