반응형
출처 - http://www.soulfree.net/734
휴우... 제목이 엄청길다.
내 블로그 이외에도 이 내용으로 많은 자료가 이미 많이 올라와있지만
프로그램 할때마다 필요한데 내 머리는 외워주지를 않아서 결국 포스팅 해버리게 되었다.... 매번 소스찾기가 귀찮아서.ㅠㅠ
이 코드가 필요한 경우를 예를 들면,
데이터를 송수신 하는 다중 스레드 프로그램이 있는데
데이터를 수신하는 스레드에서 프로그램 화면을 갱신하려고 하면 바로 이 글 제목같은 문제가 발생한다.
그래서 대리자를 통하여 스레드간의 자원을 공유할 수 있도록 해주어야 한다.
간단한 코드이지만 이상하게도 외어지지가 않는다ㅠㅠ
코드 설명을 하고자 쓰는 글이 아닌지라... 혹시 설명이 필요하신 분은 댓글 달아주시길...
- * WPF의 경우의 예
using System.Windows.Threading; //using을 먼저 해주고...
...
public delegate void ThisDelegate(); //클래스의 맴버 변수로 delegate 선언만 해둔다..
public partial class Window1 : Window
{
...
reader.Dispatcher.Invoke(DispatcherPriority.Normal, (ThisDelegate)delegate()
{
box.Stroke = Brushes.Black;
}); - 일반 Windows Form 응용프로그램의 예
if (this.textBox_log.InvokeRequired)
{
this.textBox_log.Invoke((MethodInvoker)delegate
{
this.textBox_log.Text += DateTime.Now.ToString() + " : " + msg + "\r\n";
this.textBox_log.SelectionStart = this.textBox_log.TextLength;
this.textBox_log.ScrollToCaret();
});
반응형
'[ Program ] > C#' 카테고리의 다른 글
네트워크 연결확인방법 (0) | 2022.03.20 |
---|---|
반복문도는동안 컨트롤텍스트 바꾸기(현재까지 실행된내용 라벨에 업데이트) (0) | 2015.07.22 |
C#에서 주소창 url 가져오기 (0) | 2015.03.13 |
Windows Forms에서 웹서버로 파일 업로드 하기 (0) | 2015.02.25 |
문자열마지막구분자 없애기 (0) | 2014.12.01 |
댓글