[C#] STAThread et ClipBoard
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 :
Code:
1 2 3 4 5
|
Image img = Image.FromFile("D:\\Projects\\Simulateur\\Images\\Reception.png");
Clipboard.SetDataObject(img);
RTB_TracesHexa.Paste();
img.Dispose(); |
Ce qui est bizard c'est que je vois l'image s'afficher et que l'erreure remonte juste apres.
Voila l'erreur remontée
Code:
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() |
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.
Mais au fait ca sert a quoi [STAThread] ?8O
Merci d'avance pour vos réponses.