2015-01-04 4 views
-1

C#의 Windows 응용 프로그램에서 작업하고 있는데 button1을 클릭하면 "MyFunction()"함수가 실행됩니다. 완료하려면 몇 분이 걸릴 때문에 "MyFunction()"동안 실행중인 pictureBox1 이미지를 변경하려면 노력하고 있지만 코드를 사용하여 지금까지 원하는 이미지 "MyFunction"실행 후에 변경됩니다 끝내다.버튼을 클릭하고 함수를 실행하기 전에 pictureBox에 다른 이미지 표시 C#

MyFunction()이 작동하는 동안 GUI가 정지하지만 "MyFunction();"을 호출하기 전에 이미지 (pictureBox1.Image = Resource1.Working;)를 변경하려고합니다.

"MyFunction()"이 시작되기 바로 전에 pictureBox1에서 이미지가 "작동 중"임을 어떻게 표시 할 수 있습니까? 명령문은 하나 개의 스레드, 주 스레드에서 순차적으로 실행할 수 있도록 감사

void Button1Click(object sender, EventArgs e) 
    { 
     pictureBox1.Image = Resource1.Working;//To show image "Working.jpg" while function is running 

     MyFunction(); 

     pictureBox1.Image = Resource1.WorkCompleted;//To show image "WorkCompleted.jpg" when function finishes 

     //End of program 
    } 
+0

그림 상자의 이미지를 변경하는 스레드를 만들 수 있습니다. –

+0

많은 기존의 질문을 검색하는 것을 고려하십시오 ... –

+0

안녕 Jawad, 귀하의 제안에 감사드립니다. 전에 스레드로 작업하지 않았습니다. 이미지를 변경하는 스레드가 작성되면 현재 가지고있는 코드는 동일하게 유지되거나 변경됩니까? – Sarmeu

답변

2

윈도우의 응용 프로그램은 단일 스레드입니다. 다음과 같이 .net 4.5에서 async/await을 사용하십시오.

async void Button1Click(object sender, EventArgs e) 
{ 
    pictureBox1.Image = Resource1.Working; 

    await Task.Run(() => MyFunction()); 

    pictureBox1.Image = Resource1.WorkCompleted; 
} 
+0

안녕하세요 Balanikas. 도와 줘서 고마워. 내가 SharpDevelop IDE에서 노력하고있어 "작업"에 대한 조치가 존재하지 않습니다 (나는 이것이 ide 문제에 대해 더 많이 알고있다). Visual Studio에서 시도한 결과 제대로 작동하는 것 같습니다. NET 4.5로 작업하는 경우에도 SharpDevelop에서 왜 작동하지 않는지 잘 모르겠습니다. 어쩌면 Sharp Develop에서이를 사용하는 또 다른 방법이 필요합니다. 다시 한 번 감사드립니다. – Sarmeu

관련 문제