나는이 일을하는 데 몇 가지 방법을 시도했지만 효과가있는 것을 찾지 못하는 것 같습니다. GUI가 있고 단추를 누르면 모든 처리가 스레드에서 수행됩니다. 예를 들어 다음 코드가있는 경우 :다른 스레드의 패널을 어떻게 채울 수 있습니까?
public void coolMethod()
{
int a = 0;
while (a != 20)
{
addPicturebox();
a++;
Thread.Sleep(1000);
}
}
int width = 3;
int height = 3;
int imgCounter = 0;
public void addPicturebox()
{
PictureBox pb = new PictureBox();
pb.Size = new Size(50, 50);
pb.Location = new Point(width, height);
pb.ImageLocation = @"C:\Users\User1\Pictures\white.png";
pb.Show();
panel1.Controls.Add(pb);
imgCounter++;
width += 53;
if (imgCounter == 5)
{
height += 53;
width = 3;
imgCounter = 0;
}
}`
그것은 그러나 coolMethod()
가 다른 스레드에서 실행되고 작동합니다 내가/업데이트 다른 스레드에서 패널에 컨트롤을 추가 할 수 없습니다.
누구나 cool1을 실행할 수있는 솔루션이 있습니까? addPicturebox()
이 메서드는 gui 스레드에서 실행되며 메서드가 완료되거나 다른 제안이있을 때까지 thread1이 일시 중지됩니다.
가능한 경우 많은 감사드립니다. 이 답변을 받았다면 많은 도움을 받았지만이 시나리오에서 작동 할 수있는 예제를 찾을 수 없기 때문에 친절하게도 저 페이지를 링크 할 수 있습니까?
와우
를 사용해야하고 나는 이것을 시도하고 완벽하게 일했다. 감사합니다 한 잔 Valjura – Faker
@ Faker 당신의 기대에 부응한다면 대답을 수락하십시오. – Grx70