Claudiu HBann
async/await and mutexes
I have a service that i will inject it as singleton that has:
and I want the dictionary to be lazy initialized only once when needed like:
but when I invoke and wait for the FromTo Task that returns a list of strings the context changes and when i release the mutex it crashes because i release it from an another thread, the exception message looks like this: "Object synchronization method was called from an unsynchronized block of code."
Even if i add ConfigureAwait(true) doesn't switch the context to the captured one.
Any idea why this happens or how can I do it differently?
Thank you in advance 😃
9 replies
C# Tasks question
hello, idk if this is the right place to ask but i have a question about how the tasks in c# work, like, let's say we have an application with an GUI and on an event on a button click I await a task that it will take about 2-3 seconds, but the GUI doesnt freeze and it works just fine, the question is how, because I am wating for that task to finish on the UI thread and it should freeze.
As an example I have some experience with C++/WinRT WinUI3 and for something like this to work you need to switch the context with
winrt::resume_background()
and now you are on a thread from a thread pool, you do your job and next you switch back on the UI thread with winrt::resume_foreground(context)
, the context must be the one captured before resuming to the background or use the UI dispatcher to run something on the UI thread
There is a list of tasks and my task goes there and somewhere in time it runs on the UI thread too? the task contains multiple small tasks and are each of them go in the "list" one by one?23 replies