[WinForm 08.19] 크로스 쓰레딩 피하기
2011. 8. 19. 22:02ㆍC#/WinForm
반응형
델리게잇 개뿔도 몰랐는데 점점 알수록 잘못된 코드를 짜고 있다는걸 느끼게 되네...
아놔~!!!
일단 기본적으로 델리게잇 을 선언하고 쓰는 방법이 있지만 그건 나중에 정리하고 방금 안
다른 클래스에서 델리게잇 선언해서 크로스 쓰레딩 피하는 방법을 정리 단지 한줄이지만 유용해요!!
다른 클래스에서 일반적으로 메인으로 부터 데이터를 넘겨 받고 그 후 다음과 같이 쓰면 크로스쓰레딩이나 익섹셥이 뜬다 .
완전 케짜증 디버깅 없이 실행하면 되지만 왠지 찝찝하다....
말두 안되게 짜서 납품했지만 하면서 좋은게 많이 배우게 되넹 결론적으로 여기서 수정방법은
다음과 같이 Invoke(new MethodInvoker(delegate(){[실행할 내용들]}))로 하면 문제 없이 잘 실행된다...;ㅅ; 눈물 날듯
메인 폼에서는 f1이라고 클래스 객체를 햇는데 this해서 하면 걍 된다...!!
요거 말고도 그냥 델리게잇 쓰는 방법도 있고 여러 방법이 있는데 차츰차츰 공부해 보는것도 좋은거 같다.
아놔~!!!
일단 기본적으로 델리게잇 을 선언하고 쓰는 방법이 있지만 그건 나중에 정리하고 방금 안
다른 클래스에서 델리게잇 선언해서 크로스 쓰레딩 피하는 방법을 정리 단지 한줄이지만 유용해요!!
namespace zzz
{
class Class1
{
public Form1 f1;
public Class1(Form1 t)
{
f1 = t;
}
public void zff()
{
f1.Invoke(new MethodInvoker(delegate() { f1.bt[0].Text = "123"; }));
}
}
} ////////////////////////////////////////////////////////
private void button1_Click(object sender, EventArgs e)
{
Class1 c1=new Class1(this);
c1.zff();
} |
다른 클래스에서 일반적으로 메인으로 부터 데이터를 넘겨 받고 그 후 다음과 같이 쓰면 크로스쓰레딩이나 익섹셥이 뜬다 .
f1.bt[0].Text = "123"; |
완전 케짜증 디버깅 없이 실행하면 되지만 왠지 찝찝하다....
말두 안되게 짜서 납품했지만 하면서 좋은게 많이 배우게 되넹 결론적으로 여기서 수정방법은
f1.Invoke(new MethodInvoker(delegate() { f1.bt[0].Text = "123"; })); |
다음과 같이 Invoke(new MethodInvoker(delegate(){[실행할 내용들]}))로 하면 문제 없이 잘 실행된다...;ㅅ; 눈물 날듯
메인 폼에서는 f1이라고 클래스 객체를 햇는데 this해서 하면 걍 된다...!!
요거 말고도 그냥 델리게잇 쓰는 방법도 있고 여러 방법이 있는데 차츰차츰 공부해 보는것도 좋은거 같다.
반응형
'C# > WinForm' 카테고리의 다른 글
[WinForm] MSChart (0) | 2011.08.29 |
---|---|
[WinForm 08.20] 마지막 부분 선택하여 데이터 수신하기 (0) | 2011.08.21 |
[WinForm 07.17] Crystal Report 데이터베이스 없이 데이터베이스 넘기기 (0) | 2011.07.17 |
[WinForm 6.22] 03. 폼닫기전에 확인하기 (0) | 2011.06.22 |
[WinForm 6.20] 02. 데이터 STX-ETX기준으로 데이터 받기 (0) | 2011.06.20 |