Comments (4)
Also reading through the iOS code, I was curious why the work to load the image was being dispatched to the main thread.
Good question, might have to do some history digging
from splat.
Ps. I realize this would be a breaking API change, so probably 2.0 only.
from splat.
The main rationale is that if the code you are executing is already on a background thread or eventloop(wink) where you can block the thread safely, the cost of the context switch to the threadpool outweights the benefit of being async.
So the problem is, that on WinRT and WP8, you must dispatch to the UI thread to load images, it has to be async. However, I think these are two separate problems - something can be async but not necessarily always do a Task.Run. If someone were to contribute a cross-platform API called "IsOnUIThread" 😉, it would be trivial to implement bitmap loading s.t. it wouldn't always jump threads
from splat.
I'm not a fan of "IsOnUIThread" flag changing the behavior of a library call. Particularly for code that could block, I think the decision of whether a call should be async or not really needs to be explicitly decided by the caller based upon their performance criteria. For instance to play devils advocate to my use case, there may be scenarios where code running on a second event loop actually cannot block and the caller would prefer the use of the task pool and thread hop vs blocking the thread. A concrete example of this is a WPF app where different windows in the app have their own threads with their own dispatchers.
from splat.
Related Issues (20)
- [BUG] Splat.Microsoft.Extensions.DependencyInjection causes System.InvalidOperationException: Call from invalid thread HOT 16
- [Bug]: Router randomly stops showing views on navigation HOT 9
- WPF, .net 8.0 and Splat latest version: IBitmap.ToNative, FromNative, SplatColor.ToNativeBrush and SplatColor.FromNativeColor not found by compiler. HOT 3
- Change the DI Microsoft to use KeyedServiceProvider insted of ContractDictionary HOT 1
- Dependency Dashboard
- Action Required: Fix Renovate Configuration HOT 1
- Housekeeping: Change MS MicrosoftDependencyResolver to require IKeyedServiceProvider in ctor HOT 2
- [BUG] Splat.Microsoft.Extensions.DependencyInjection never disposes the service locator HOT 1
- [BUG] Project targeting net5.0 won't build with Splat.Drawing installed HOT 3
- PlatformModeDetector.InDesignMode() not working in WPF designer for nested UserControls
- Drop net 5 support HOT 2
- How to Use Splat.DI.SourceGenerator HOT 7
- Update Splat.Autofac README HOT 2
- [BUG] DryIoc resolves Views upon registration HOT 8
- [BUG] Getting dependency from DryIoC container creates dependency object twice HOT 8
- [BUG] RegisterPlatformBitmapLoader doesnt register with framework net6.0-windows HOT 1
- [BUG] Registered Func cant be resolved
- [BUG] System.MissingFieldException HOT 3
- Default Test and Run mode HOT 8
- Optimise DefaultPlatformModeDetector on csproj sdk platforms
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from splat.