위임자를 배우려고했습니다. 방금 버튼, 레이블 및 확인란을 만들었습니다. 확인란을 클릭하면 시간 형식이 변경됩니다. 버튼을 클릭하면 그에 따라 날짜가 인쇄됩니다. 다른 스레드를 사용하는, 즉 asynchromous 대리자를 사용하려고 할 때, 나는 오류크로스 스레드 작업이 유효하지 않습니다. 비동기 위임자 오류
public delegate void AsyncDelegate(bool seconds);
public partial class Form1 : Form
{
AsyncDelegate ad;
TimeZ t = new TimeZ();
public Form1()
{
InitializeComponent();
}
private void btn_async_Click(object sender, EventArgs e)
{
ad = new AsyncDelegate(t.GetTime);
AsyncCallback acb = new AsyncCallback(CB);
if (chk_sec.Checked)
{
ad.BeginInvoke(true, acb, null);
}
else
ad.BeginInvoke(false, acb, null);
}
public void CB(IAsyncResult ar)
{
t.Tim = ar.ToString();
ad.EndInvoke(ar);
lbl_time.Text = t.Tim;
}
와 내가 Timez 위 익숙해 또 다른 클래스 라이브러리에 갇혀 있어요.
Cross-thread operation not valid: Control 'lbl_time' accessed from a thread other than
the thread it was created on.
는 u는이 문제를 해결하는 방법에 나를 도와 드릴까요 : 내가 프로그램을 실행할 때이 오류가 그러나 나는이 프로젝트
public class TimeZ
{
private string tim;
public string Tim
{
get
{
return tim;
}
set
{
tim = value;
}
}
public string GetTime(bool seconds)
{
if (seconds)
{
return DateTime.Now.ToLongTimeString();
}
else
return DateTime.Now.ToShortTimeString();
}
}
에의 참조를 추가?
누군가 내 마음을 어렴풋이 보네요. 이 코드로 무엇을하려하고 있습니까? –