Windows Forms
- Accesul controalelor winforms de pe alt thread decat cel de UI
- AsyncOperationManager.SynchronizationContext.Post
- Din cate inteleg, AsyncOperationManager.SynchronizationContext intoarce contextul thread-ului curent => trebuie sa il trimit din thread-ul de UI catre worker thread ca sa functioneze cum trebuie.
- Are legatura cu "Object is in use elsewhere".
- http://www.codeproject.com/KB/cpp/SyncContextTutorial.aspx
- http://blog.quantumbitdesigns.com/2008/07/22/stop-polluting-the-ui-thread-use-a-delegatemarshaler/
- Aplicatii winforms care ruleaza fara nici o forma principala
- Am creat o clasa derivata din ApplicationContext.
- In constructorul ei
- am scris codul de bootstrapping
- am instantiat o forma dummy, creata special pentru asta (pe care o pastrez intr-un membru static).
- am salvat AsyncOperationManager.SynchronizationContext intr-un membru static si rau.
- Din thread-urile non-ui apelez metoda Post a membrului static si rau din contextul custom.
- In cazul in care ma leg la Application.ThreadException exceptiile nu mai ajung la utilizator
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.ThrowException); AppDomain.CurrentDomain.UnhandledException += (sender, e) => logger.Error((Exception)e.ExceptionObject);
page revision: 7, last edited: 06 Oct 2010 10:34