在进行冗长的操作时,请将注意力集中在主窗口上

时间:2015-05-12 09:02:23

标签: c# wpf

我有一个WPF应用程序,当用户点击按钮时调用dll。这个dll做了很长时间的操作,但是当它这样做时,我无法与MainWindow交互,例如向下滚动Datagrid记录一些更新消息,切换标签等。 如何在dll运行时保持MainWindow被激活?我想到了一个BackgroundWorker,它会在.Activate()出现时不断调用Window.Deactivated方法,但是这不会耗费大量资源,并且会减慢已经花费大量时间的其他dll的速度吗? / p>

我在等待建议:) 谢谢

1 个答案:

答案 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!");
    }