내가 (미니/소형 210) 임베디드 보드를 수행하고 난 C#에서t (VS2005 system.socket 및 system.socket.ne 사용하는 응용 프로그램을 구축하려고 않았다 - wince5 장치를 응용 프로그램하지만 내 장치에 wince 6을 가지고 있습니다!)mini210 소켓 멀티 스레드
내 목적은 이더넷을 사용하여 데이터 바이트를 보내고받는 것입니다. 보내기에는 문제가 없지만 수신하려면 멀티 태스킹이 필요합니다.
내가 곧 데이터가 있으면 포트를 수신 할 수 있도록 작업을 시작해야하지만 내 코드에 스레드 부분을 추가하면 전체 프로그램이 중단됩니다 (pc x64 코어 i5에서는 실행되지 않음).하지만 임베디드 보드 그것은 추락 할 것이다.
내가 멀티 태스킹을 제거하는 경우 networkstream.read가 온라인 상태가 아닌 경우 또는 난 일부 데이터가 손실 될 수 있습니다 networkstream.read가 온라인 상태이고 나는까지 응답하지 않습니다 프로그램을 종료 데이터를 기다리고있을 때 타임 아웃. 여기 내 코드 중 일부입니다. 도움이되기를 바랍니다.
이 코드는 수행 업무 :
private void button_connect_Click(object sender, EventArgs e)
{
try
{
//Thread TH = new Thread(new ThreadStart(con));
//TH.Start();
con();
}
catch
{
MessageBox.Show("THREAD ERROR");
}
}
public void con()
{
try
{
cli = null;
cli = new TcpClient();
cli.Connect(IPAddress.Parse(textBox_ip.Text),Convert.ToInt32(textBox_port.Text));
st = null;
st = cli.GetStream();
button_connect.Enabled = false;
button_Close.Enabled = false;
button_disconnect.Enabled = true;
statusBar1.Text = "Connected to server";
//Thread rec = new Thread(new ThreadStart(recf));
//rec.Start();
}
catch
{
MessageBox.Show("Connection faild","Error");
statusBar1.Text = "Faild to connect to server";
}
이 코드 용량 하지 일 :
private void button_connect_Click(object sender, EventArgs e)
{
try
{
Thread TH = new Thread(new ThreadStart(con));
TH.Start();
//con();
}
catch
{
MessageBox.Show("THREAD ERROR");
}
}
public void con()
{
try
{
cli = null;
cli = new TcpClient();
cli.Connect(IPAddress.Parse(textBox_ip.Text),Convert.ToInt32(textBox_port.Text));
st = null;
st = cli.GetStream();
button_connect.Enabled = false;
button_Close.Enabled = false;
button_disconnect.Enabled = true;
statusBar1.Text = "Connected to server";
//Thread rec = new Thread(new ThreadStart(recf));
//rec.Start();
}
catch
{
MessageBox.Show("Connection faild","Error");
statusBar1.Text = "Faild to connect to server";
}
}
내 작업의 하나가에있는 동안 내가이 충돌납니다 볼 수 두 번째 작업이 주석 처리 된 코드
미리 도움을 주셔서 감사합니다.