스레드 사이의 조작이 잘못되었습니다. 컨트롤을 만드는 스레드가 아닌 스레드에서 접근합니다.
10042 단어 라인
1. Control.CheckForIllegalCrossThreadCalls =false;
2. Invoke 。
。net2.0 , 。 Control.CheckForIllegalCrossThreadCalls =false; , true。
1 。 2
2
Invoke(new MethodInvoker(delegate()
{
//do something... }));
, : : richTextBox1 。 windows , , , 。 :
1. load CheckForIllegalCrossThreadCalls false 。 , 。 。
2. 。 , , , 。
[c-sharp] view plaincopy
private delegate void richTextBoxCallBack();
//
public void server()
{
richTextBoxCallBack callback = delegate()//
{
string ip = getIP();// ip
try
{
// txt
StreamReader smReader = new StreamReader(path, System.Text.Encoding.UTF8);//
string line;
while ((line = smReader.ReadLine()) != null)
{
//string[] arrStr = line.Split('|'); // “|”
port = Int32.Parse(line.Trim().ToString());
// MessageBox.Show(port.ToString());
}
smReader.Close();
smReader.Dispose();
IPAddress ipAddress = IPAddress.Parse(ip);
//
listener = new TcpListener(ipAddress, port);
//
listener.Start(13);
//
this.richTextBox1.AppendText("Socket , IP" +
ip + " :" + port + "/n"); // ???
// , this.StartSocketListen,
// Socket
SocketServiceFlag = true;//
Thread thread = new Thread(new ThreadStart(this.StartSocketListen));
thread.Start();
this.button1.Enabled = false;
this.button2.Enabled = true;
}
catch (Exception ex)
{
MessageBox.Show(" !!" + ex.Message);
}
};
richTextBox1.Invoke(callback);
}
private delegate void richTextBoxCallBack();
richTextBoxCallBack callback = delegate(){}; // , callback ,{} , richTextBox1.Invoke(callback);
: “” 。
2003 , , 05~
05 , ~
, ~
:
Control.CheckForIllegalCrossThreadCalls = false;
,OK, ~
~
:
, 05 , InvokeRequired ~
true, Invoke , ~
//
private delegate string returnStrDelegate();
// ~
private string returnSchool()
{
return CB_School.SelectedValue.ToString();
}
// Invoke ~, ~
private string returnCB(returnStrDelegate myDelegate)
{
if (this.InvokeRequired)
{
return (string)this.Invoke(myDelegate);
}
else
{
return myDelegate();
}
}
// ~
string _school = returnCB(returnSchool);
, , ~
, ~
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 라인과synchronized 키워드를 깊이 있게 설명하다루틴이야말로 프로그램의 집행자이고 여러 루틴 간에 프로세스 중의 자원을 공유하고 있다.하나의 cpu는 동시에 하나의 라인만 실행할 수 있으며, 모든 라인은 하나의 타임 슬라이스가 있으며, 타임 슬라이스가 다 사용하면...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.