While digging into some background stuff in WinRT I found some mismatch in API. It’s not something that’s completely different. Both APIs deal with some background operations, both having same prefix “Background” (although in different namespace). Have a look yourself.
The first background operations is dealing with uploads and downloads. When you want to list all (in this case) background operations, you can call
BackgroundDownloader.GetCurrentDownloadsAsync(). This method returns
IAsyncOperation<IReadOnlyList>. Aka it’s asynchronous and it’s a method.
The other one is dealing with background tasks. And when you want to all background tasks, you can call
BackgroundTaskRegistration.AllTasks. This method returns simple
IReadOnlyDictionary<Guid, IBackgroundTaskRegistration>. Aka it’s synchronous and it’s a property.
Maybe I’m too pesky. But these are not that different from developer’s point of view, isn’t it? Why is then one method and other property? And why there’s a mismatch between synchronous call and asynchronous call (though I can imagine one is reading just some application’s related piece of memory while the other one is doing some call though system to some “background transfer service”, but still ...)?