我目前的主表单调用了ObjectManager类中的方法,该方法会在不同的线程中(使用Task.Factory.StartNew())加载数据库中指定的数据,然后抛出一个事件以让主表单知道何时完成,以便表单可以更新其控件。
目前,我使用一个带有参数的单一事件来通知主表单发生了什么变化(机会/报价/工作等)。
我想知道是否最好为每种类型的更改创建单独的事件?
DataChanged EventArgs:
class DataChangedEventArgs : EventArgs
{
public String ObjectName { get; private set; }
public DataChangedEventArgs(String objectName)
{
ObjectName = objectName;
}
}
我的事件处理函数
private void dataChanged(object sender, DataChangedEventArgs e)
{
switch (e.ObjectName)
{
case "OpportunityList":
//Update Opportunity List
break;
case "Opportunity":
//Update single opportunity details
break;
case "QuoteList":
//Update Quote List
break;
case "QuoteDetails":
//Update single quote details
break;
case "JobDetails":
//Update job details
break;
case "OpportunityLogs":
//Do Stuff
break;
case "QuoteLogs":
//Do Stuff
break;
case "JobLogs":
//Do Stuff
break;
}
}
编辑: 事件被调用的位置: 有多种类似于此的方法,它们加载不同的内容/保存不同的内容,然后使用不同的参数调用相同的事件。
class ObjectManager
{
public List<Opportunity> _opportunities;
public void loadOpportunityDetails(int _opportunityID)
{
int index = _opportunities.FindIndex(
delegate(Opportunity opportunity)
{
return opportunity.opportunityID == _opportunityID;
});
//Load details of the given opportunity
DataChangedEvent(this, new DataChangedEventArgs("OpportunityDetails"));
}
}