我正在写一个使用第三方库来处理一些数据的应用程序。 在非常简单的例子,我有运行作为这样的任务的方法:
private void ProcessListOfItems(List<string> items)
{
while (items.Count > 0)
{
3rdPartyLibObject.Process(items[0]);
items.Remove(0);
}
}
正如你所看到的,我的代码,目前正在编写方式,我从列表中尽快删除每个项目的工艺路线()方法返回。 但是,它可能是一个项目的处理可能会失败,我需要知道,如果发生这种情况。 不幸的是,process()方法不返回布尔值,表明该项目已成功处理与否,而是将火ProcessingComplete和ProcessingFailed事件。 我迷上了这样的那些事件的事件处理程序:
3rdPartyLibObject.ProcessingComplete += obj_ProcessingSuccess;
3rdPartyLibObject.ProcessingFailed += obj_ProcessingFailed;
private void obj_ProcessingSuccess(object sender, 3rdPartyLibObject.ProcessingEventArgs e)
{
this.Invoke(new ProcessedHandler(OnProcessed), new object[] { true });
}
private void obj_ProcessingFailed(object sender, 3rdPartyLibObject.ProcessingEventArgs e)
{
this.Invoke(new ProcessedHandler(OnProcessed), new object[] { false });
}
private void OnProcessed(bool success)
{
if (success)
{
Debug.WriteLine("Item was processed succesfully!");
}
else
{
Debug.WriteLine("Failed to process item!");
}
}
我希望做的是有我的代码块中调用3rdPartyLibObject.Process(后右),直至事件处理程序的火灾之一,所以我知道,如果该项目未能处理或没有(我是否应该将其删除列出与否)。 我猜测,这可能不是一个罕见的情况,但我以前从来没有碰到这个问题。 有没有在最佳实践来处理这种情况的普遍认同?