2013-06-21 4 views
-1

실행중인 모든 작업을 표시하는 Windows 양식 appliation을 만들려고합니다. 원하는 경우 개별적으로 작업을 중단하고 싶습니다. 콘솔 응용 프로그램으로 작동하는 응용 프로그램이 있지만 창 양식 응용 프로그램으로 빌드 할 때 나사 위로. 다음은 내 코드의 작동 방식입니다.Windows에서 다중 스레딩 C#

  • 루프
    • 목록
    • 작업을 시작으로
    • 상점을 작업을 확인 =
  • 끝 루프

나는이 목록을 표시 할 내 양식에 listView를 저장하고 몇 초마다 업데이트하여 이름과 상태를 표시합니다. 누군가가 저에게 도움을 주거나 멀티 스레딩을 연구하기 위해 좋은 독서를 제안 할 수 있습니까? 감사합니다. .

+0

코드를 제공 할 수 있습니까? – kobigurk

+7

* "창문 양식 응용 프로그램으로 만들려고 할 때 나사가 튀어 나오려고 할 때"* 실제로 잘못 된 것을 말하지 않았습니까? 어떤 오류가 발생했는지, 어떤 동작을 보았는지, 어떤 동작을하는지 자세히 설명하십시오. 너는 볼 것을 기대한다. 또한 오류와 관련된 코드를 포함하십시오. –

+0

"나사를 조이면"- 문제가 이것보다 더 확실합니까? 어쩌면 거기에 _exception_이 있을까요? – Brian

답변

3

콘솔 응용 프로그램으로 작동하는 응용 프로그램이 있지만 Windows 응용 프로그램으로 빌드하려고하면 응용 프로그램이 작동하지 않습니다.

포트가 Windows Forms로 변경되지 않은 경우 사용자 작업의 백그라운드 스레드에서 Windows Forms 컨트롤을 업데이트 할 가능성이 있습니다.

Windows Forms 컨트롤은 백그라운드 스레드가 아닌 기본 (UI) 스레드에서만 사용할 수 있습니다. UI 업데이트를 수행하려면 Control.Invoke 또는 Control.BeginInvoke을 사용하여 호출을 UI 스레드로 다시 마샬링해야합니다.

+0

이것이 문제 일 가능성이 높지만 나는 그렇지 않았다. 우리가 OP에서 더 자세한 정보를 얻을 때까지 어떤 결론으로도 뛰어 가고 싶지 않습니다. –

+0

@ScottChamberlain 예 - 제가 질문했습니다. 그러나 OP가 "콘솔 앱에서 작동하는 버전"을 갖고 있으며 Windows 양식으로 전환했기 때문에 OP가 작동하지 않는다는 사실을 고려할 때 이는 전반적으로 스레딩과 관련된 # 1 문제입니다 및 Windows Forms, 그래서 나는 그것을 문제가되는 매우 높은 확률을 줄 줄 :) –