Hata

2013-07-20 12 views
11

Bu kodu denedi panoya dize kopyalamaya çalışırken:Hata

Clipboard.SetText("Test!"); 

Ve bu hatayı alıyorum:

Bunu nasıl

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.

düzeltebilirim ?

+0

Bir arka plan iş parçacığından bu yöntemi ('Clipboard.SetText()') çağırmaya mı çalışıyorsunuz? Bize biraz daha bağlam (yani, bu işlev çağrısını çevreleyen kod) verebilir misiniz? –

cevap

10

ana yöntemle yukarıda [STAThread] koyun:

[STAThread] 
static void Main() 
{ 
} 
+0

WinForms'u kullandığını tahmin ediyorum, bu yüzden 'Main''e erişimi yok. –

+0

@newStackExchangeInstance bu pano uygulamalarından birini kendim winforms yaptım, bu yüzden onun için çalışacağından eminim :) – Thousand

+0

Çalışmayacağınızı söyleme, sadece WinForms'da 'Main' düzenleme işleminin bir PITA olduğunu söyleyerek. –

26

Bunu bazı eski kodu kullanması nedeniyle, özel olarak bu yöntemi çağırmanız gerekir. Bunu deneyin:

Thread thread = new Thread(() => Clipboard.SetText("Test!")); 
thread.SetApartmentState(ApartmentState.STA); //Set the thread to STA 
thread.Start(); 
thread.Join(); //Wait for the thread to end 
+1

* Eski kod ne kullanır? Panoya mı? COM "miras" değildir. –

+0

Bu, Selenyum testindeki pano içeriklerini kontrol etmek için çok kullanışlıdır. Panoya kopyalamak için bir düğme varsa. –

+1

bu benim için hatayı çözdü. özellik eklenmedi. – syonip