我使用的是一个提供异步机制的c# COM库(实际上是由我的客户强加的PDFCreator )。将文档文件转换为PDF文件需要两件事:
PrintFile方法,它启动转换ready事件,以指示转换已完成编辑:不存在异步模式的开始/结束方法。我必须启动printfile方法,并等待引发事件。
当我只有一个文件要转换时,这是可以接受的,但是由于这种异步模式,我很难实现几个文件的批处理转换。
如何管理要转换的文件队列?
我希望我的应用程序( WPF 1)只是“排队”一个文件来转换.然后,我的worker对象逐个排列文件,确保一次只能发生一次转换。
请注意,我使用的是C# 4,如果有优势的话,我希望(因为我正在学习)使用任务。
发布于 2011-02-08 14:44:04
如果PDFCreator公开了一个基于APM的接口(即BeginFoo / EndFoo方法),那么您可以将这些方法包装在一个任务中:
Task<int> bytesRead = Task<int>.Factory.FromAsync(
stream.BeginRead, stream.EndRead, buffer, 0, buffer.Length, null); 这里有一篇文章:http://blogs.msdn.com/b/pfxteam/archive/2009/06/09/9716439.aspx,它更详细地阐述了这一点。
一旦您有了一组任务,就可以通过自定义的TaskScheduler或默认的任务:(http://msdn.microsoft.com/en-us/library/dd997402.aspx)启动它们的队列,看起来您可以在场景中使用默认的任务调度程序。
task.Start()注意:如果您想让这些任务在它们完成时通知UI,您可以使用一个延续(http://msdn.microsoft.com/en-us/library/dd270696.aspx),它可以在任务完成时通知UI。注意,要回UI线程,您需要使用一个SynchronizationContext或Dispatch.BeginInvoke。
https://stackoverflow.com/questions/4933808
复制相似问题