2010-08-11 93 views
4

我有关于WPF控件的WinForms WPF互操作 - WPF控件失去活性

,我的工作的应用程序是在整个应用程序线程的应用程序与几个WPF用户控件一个相当大的Windows窗体画一个类似的问题这question。问题出现在应用程序的插件中,在独立线程上调用第三方C++库时,WndProc被重写以从第三方库中获取进度更新。我还没有确定导致问题的确切场景,但类似于上面提到的问题,几次运行后,wpf控件无法绘制和更新。

设置elementhosts的宽度确实解决了大多数控件的绘画问题,但在此之后,应用程序中的所有wpf控件似乎变得“无响应” - 可视化...进度条无法显示进度(尽管值会改变),滚动条不响应,在列表视图中选择一个项目不会高亮显示它(它在调整大小后会突出显示,并且它实际上会被选中 - 您只能看到它被选中),树视图不会在调整大小,它只显示树形视图应该是黑色的背景(虽然当我点击他们应该在树视图中的项目,事件确实被激怒)

我知道我应该找出根首先导致这种问题的它的hapening相当随机,很难陷入) - allthough在WndProc方法中放置一个断点似乎会导致它在一个调节器基础上失败......

我希望的是一种'重新激活'/刷新整个应用程序中的所有其他控件...我是一名中级wpf,c#开发人员,并且对于在后台发生的消息和事件还没有足够了解,以便有效地使用它们......我的想法是某些事件或消息这告诉wpf重绘必须被打破或中断或什么 - 我怎么能确定什么是坏的,也许重新激活它?

任何意见将非常感激......

谢谢

+0

我设法缩小了造成问题的原因。自定义WPF进度条从WndProc方法重复更新,当此更新被删除没有其他wpf控件发生问题时...我通过删除有问题的wpf控件并放入Windows窗体控件来解决此问题。但是,它并不能解决问题发生的原因以及可以采取哪些措施来防止这个问题......我将进一步测试和测试应用程序以尝试确定此问题。 – skitnica 2010-08-12 16:26:18

回答

0

这可能是渲染永远不会被处理,因为这WndProc的倍率引起WPF控件图中的事件。

由于您正在与WinForms进行交互,因此您可以通过在某处调用Application.DoEvents();来强制处理事件。也许在更新进度栏后。