2012-11-15 2 views
1

내가 다음 줄에 오류가 점점 오전 안녕하세요 :는 .NET은 ThreadStateException을 받고

If Not System.Windows.Clipboard.GetDataObject Is Nothing Then 

내가 그것을 C#에서 다음과 같이 보일 것입니다 생각

if (System.Windows.Clipboard.GetDataObject!=null) { 

오류 :

"ThreadStateException : 현재 스레드가 OLE 호출이 이루어지기 전에 단일 스레드 아파트 (STA) 모드로 설정되어야합니다."

누구든지 해결 방법을 알려 줄 수 있습니까? 온라인에서 몇 가지 제안은 'main'메서드를 통해 <STAThread()> _을 추가한다고 언급했지만,이 메서드는 ASP.NET 컨트롤러 메서드입니다.이 메서드를 추가하려고 시도했지만 도움이되지 않았습니다. 누구든지 어떤 제안이 있습니까?

답변

1

ASP.NET은 실제로 STAThread와 관련되지 않습니다.

당신은 나에게 이런 식으로 뭔가에 가고있어 this article에서 살펴 보자 운영 체제

에서 당신이 원하는에 액세스 할 STA 모드에서 스레드를 실행하기 위해 추가 작업 스케줄러가 필요합니다.

또 다른 COM 컨텍스트에서 실행되는 운영 체제의 클립 보드와 상호 작용하므로 아들의 동시성이 위험 할 수 있으므로 페이지를 여러 번 요청하면 작업이 엉망이 될 수 있습니다.

개선을 위해 무엇을 시도하고 있습니까? 아마도 더 좋은 방법이있을 것입니다.

+0

을 새 스레드를 시작할 수 있습니다 'Microsoft.Office.Interop.Word.Document.Selection.CopyAsPicture'그리고 이제 그림을 얻으려고합니다. 귀하의 설명을 바탕으로 그것은 아마도 내가하는 방식으로 좋은 생각이 아닐 것입니다. 어떤 제안? –

+0

그렇게 할 수있는 제품이 있습니다. pdf 프린터도 좋은 생각입니다. 그러나 ASP.NET 응용 프로그램의 사무 자동화는 지원되지 않습니다 (infopath로 동일한 작업을 시도했습니다). –

+0

확인하실 수있는 특정 제품이 있습니까? –

0

이가 당신의/bin 디렉토리에 날짜 DLL의 부족으로 인해 발생할 수 있습니다 것으로 보인다. 그것을 지우려고 했습니까? 또한

http://www.devnewsgroups.net/windowsforms/t36723-current-thread-must-set-single-thread-apartment-sta.aspx

http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/2411f889-8e30-4a6d-9e28-8a46e66c0fdb/

, 당신은 명시 적으로 거의 내가 한, 이미지에 들어오는 Word 문서를 변환하려고 단일 아파트에서 모드

imports System.Threading 

dim newThread As New Thread(new ThreadStart(AddressOf ThreadMethod)) 
newThread.SetApartmentState(ApartmentState.STA); 
newThread.Start(); 

'and elsewhere 
Public Sub ThreadMethod() 
    If Not System.Windows.Clipboard.GetDataObject Is Nothing Then 
     'stuff 
    End if 
End Sub 
+0

'Dim wordThread As Thread = 새 스레드 (새 ThreadStart (CreateWordPreview (br, streamLength, key + fileName)))') 그러나'Delegate 'System.Threading.ThreadStart '생성자에 대한 유일한 인수로'AddressOf '표현식 또는 람다 표현식이 필요합니다. –

+0

C#에서 VB.Net로 변환하기위한 약간의 실수 : "ThreadMethod"(내 대답 변경) 전에 AddressOf가 있어야합니다. –

관련 문제