我有一个WPF gui,它有一个名为Manager的类的实例,它基本上管理某些通信和数据功能。
我在我的管理器中尝试/捕获块,但我想知道将其传达给GUI的最佳实践。
例如,点击按钮会生成onClick
个事件,在该代码中我会调用Manager.DoProcessing()
。麻烦的是,我如何知道DoProcessing
是否遭到轰炸?我不想用另一个try catch来包围函数调用...
返回标识错误的ErrorType
enum
是否足够
enum ErrorType
{
NoError, TimeOut, DBCorrupt
}
等。或者这简单化了吗?应该补充的是,对Manager
的调用将使用BackgroundWorker
...
答案 0 :(得分:1)
不要返回错误代码。 C#比那更好。很快你就会有一个方法需要返回一些东西:public Person GetPerson(int personID){}
并且你不想开始使用out
参数。如果GetPerson无法“获取”“人物”,那就是例外,因此你应该抛出异常。
您的Manager类是ViewModel吗?如果没有,请将其包装成一个。您的viewmodel应该catch
异常(它发生的任何线程),并负责将其呈现给视图。一个选项是创建一个ErrorMessages的ObservableCollection(或字符串,但我会编写一个ErrorMessage类,其中包含消息,严重性,出现时间等)。然后你的XAML可以直接绑定到那个。每当catch块向集合添加ErrorMessage时,您的视图将自行更新。
如果您使用的是BackgroundWorker,那么您可能需要在RunWorkerCompleted事件中检查异常,而不是使用“catch”块。 This documentation explains how.