"Current thread must be set to single thread apartment (STA)" error in copy string to clipboard
c#, clipboard
Solution
Make sure thread that runs the code is marked with [STAThread] attribute. For WinForm and console based apps it is generally `Main` method
Put `[STAThread]` above your main method:
[STAThread]
static void Main()
{
}
For WinForms it is usually in generated Main.cs file that you can edit if necessary (it will not be re-generated on changes). For console it's were you define the `Main`.
If you can't control the thread (i.e. you are writing a library or main app is locked by some reason) you can instead run code that accesses clipboard on specially configured thread (`.SetApartmentState(ApartmentState.STA)`) as shown in another answer.
Problem
I have tried code from How to copy data to clipboard in C#: ``` Clipboard.SetText("Test!"); ``` And I get this error: 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. How can I fix it?