Bonjour à tous.
J'ai un petit problème d'accès au ClipBoard je pense. Mon application contient une dll. Cette DLL génère un Thread qui a accès à un RichTextBox.
J'aimerais afficher une image dans ce RTB via le Thread.
J'utilise ce code pour dessiner mon image :
Ce qui est bizard c'est que je vois l'image s'afficher et que l'erreure remonte juste apres.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Image img = Image.FromFile("D:\\Projects\\Simulateur\\Images\\Reception.png"); Clipboard.SetDataObject(img); RTB_TracesHexa.Paste(); img.Dispose();
Voila l'erreur remontée
J'ai essayer de décrypter le message d'erreure et j'ai vérifier que mon main disposait bien du [STAThread]. Mais puisque mon Thread est crée dans ma Dll, je ne sais pas trop ou mettre ce [STAThread] pour qu'il s'applique également à cette DLL.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 System.Threading.ThreadStateException was unhandled Message="Current thread must be set to single thread apartment (STA) mode before OLE calls can be made. Ensure that your Main function has STAThreadAttribute marked on it." Source="System.Windows.Forms" StackTrace: at System.Windows.Forms.Clipboard.SetDataObject(Object data, Boolean copy, Int32 retryTimes, Int32 retryDelay) at System.Windows.Forms.Clipboard.SetDataObject(Object data) at Simulateur.FTrace.AjouteTrace(String msg, Type_Trace TypeTrace) in D:\Projects\Simulateur\Simulateur\FTrace.cs:line 22 at Simulateur.FPrincipale.AjouteTrace(String msg, Type_Trace TypeTrace) in D:\Projects\Simulateur\Simulateur\FPrincipale.cs:line 136 at Simulateur.Noyau.AjouteTrace(String msg, Type_Trace TypeTrace) in D:\Projects\Simulateur\Simulateur\Noyau.cs:line 161 at Master_ModBusLib.Master_ModBus.launchGI() in D:\Projects\Simulateur\ModBus\Master_ModBus.cs:line 58 at Master_ModBusLib.Master_ModBus.OrdonnancementInterrogation() in D:\Projects\Simulateur\ModBus\Master_ModBus.cs:line 27 at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart()
Mais au fait ca sert a quoi [STAThread] ?
Merci d'avance pour vos réponses.
Partager