开发者

What are some strategies for working multi-threading into libraries?

I'm in the process of writing a library that deals with long-running tasks like file downloading and proc开发者_如何转开发essing large amounts of text. I want to multi-thread this library so that these tasks won't freeze up the applications that use them.

Do you have any advice for doing so in a structured manner, or specific classes I should use/avoid? I was thinking of using the IAsyncResult interface: http://msdn.microsoft.com/en-us/library/system.iasyncresult.aspx, or perhaps some BackgroundWorkers.


so that these tasks won't freeze up the applications that use them.

If this is your goal, you should look into the standard asynchronous programming patterns in the framework.

If your library is targeting .NET 4, have it return Task and Task<T>, as this will ease transition into the async support coming in the next release of C# and VB.NET. This also has the very nice addition of allowing synchronous usage with no extra work on your part, since the user can always just do:

var result = foo.BarAsync().Result; // Getting Task<T>.Result blocks, effectively making this synchronous

If you're targeting .NET 3.5 or earlier, you should consider using the Event-based asynchronous pattern, as it is used in more of the current APIs than the APM.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜