非阻止消息框& DllImport缺点

时间:2010-11-22 14:22:49

标签: c# multithreading .net-4.0 c#-4.0 blocking

我目前是一名开发特定任务的开发人员;用户经常是多任务处理,因此他们经常会输入错误输入数据。任务的性质使得通知他们重要的插补错误。我们目前在应用程序的底部使用面板和标签的组合和/或小标签,以便通知他们发生的事情。在不久的将来,我们将负责更新应用程序的界面。

最近在查找一个不相关的问题时,我遇到了以下问题: click here for link答案引起了我的注意,将所有者的句柄设置为零(null)确实做了作者所要求的。

由于我最近才开始使用C#导入和处理非托管代码,我想知道是否存在使用此方法的任何“副作用”。我当然意识到用户可能会导致应用程序打开大量的消息框。我过去曾尝试使用线程安全的消息框,并发现我们的应用程序始终位于顶部的要求是一个问题(消息框的位置被应用程序隐藏)。

我能够根据需求测试代码,它似乎与我找到的方法有类似的问题,但似乎我们可以解决这些问题。我确实想到了可以做的事情,我真的需要弄清楚如何确定屏幕上显示消息框的位置。

为了解决Jim的问题,我们必须了解正在运行的应用程序正在不断处理数据。因此,目前锁定主线程的任何事情都可能导致处理此数据时出现问题,这对任务至关重要。我们使用标签来解决这个问题,但是对于我们未来的任务,我正在寻找一种更简洁的方法来呈现这些错误消息。主要问题是解决方案也不能为应用程序增加额外开销。一些额外的tid-bits信息是系统在封闭网络上使用。

我认为这个简短的问题必须是,使用这种特殊方法是否有任何负面影响,在C#中显示无阻塞的消息框?

1 个答案:

答案 0 :(得分:3)

通过将窗口句柄设置为null,显示模态消息框没有特定的技术问题。我质疑它作为UI错误消息指示的用途,因为它不会阻止用户面对错误继续。

模式消息框,使用户点击确定,然后更正错误,使得用户界面非常笨重。但是一个可能被隐藏并让用户继续前进的弹出窗口同样糟糕。有更好的解决方案,其中一些解决方案显示在Windows窗体的验证示例中(可能是WPF)。