Today I faced following problem: User picks many files by OpenFileDialog control. They must be loaded asynchronously. Loading some of them may fail. I want to receive callback when loading completes. How can I encapsulate all of this in single repository Load method signature ? After some time I came up with following interface: 1: interface IAsyncResult<out T> 2: { 3: T Result { get; } 4: Exception Error { get; } 5: bool IsCompleted { get; } 6: bool Wait(int timeout); 7: void AttachCallback(Action<IA... ......