简单说下我的大体情况就是 我 现在 搞上下位机 下位机是 stm32 用的 协议是lwip 我在里面编了就是 一直向上位机发送数据 每个包 1460 吧 然后 上位机 我就是 用的 vs2010 编的 语言是 vc#.net 现在 通信速度 基本是 1M/s 以上 但是 不是 很稳定 现在 就是 有个问题就是 我用的 阻塞的方式 当连接 服务器与客户端连接后 然后 开始 接收数据下面就是代码 其中 showMsg(stringdata );我是用的 委托 invoke 下面可以看见 就是 在 当前窗体 显示 接收到的数据 并且不断地 相加
[/ while (Connected)
{
try {
if (jx)
{
int recv = newclient.Receive(data);
if (recv == 0)
{
MessageBox.Show("sorry buffer is empty!!!!");
break;
}
y += recv;
Console.WriteLine(recv.ToString());
string stringdata = Encoding.ASCII.GetString(data, 0, recv);
showtext(y.ToString());
showMsg(stringdata );
}
}
catch (Exception e)
{
MessageBox .Show(e.Message );
}
finally
{
}
}
}
]这是 showmsg(string msg)的程序
public void showMsg(string msg)
{
try
{
{
//在线程里以安全方式调用控件
if (receiveMsg.InvokeRequired)
{
MyInvoke _myinvoke = new MyInvoke(showMsg);
receiveMsg.Invoke(_myinvoke, new object[] { msg });
}
else
{
receiveMsg.AppendText(msg); }
}
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
finally
{
}
}
现在 就是 我 发现 速度 不断的下降 不知道 是为什么 然后 我 怀疑 是不是显示这块 有问题 然后 我就把 showmsg 注释掉 发现速度 稳定下来了 能运行 半小时 以上 我想问下我
一、 在不影响 接受速度的情况下我该怎么 编程
二、我想用 异步 是否 好点?
三、或者我把显示 去掉直接 改为实时 保存到 某文件中区 还有 就是保存 最好用 什么形式保存 就是代码 我的 程序里面是 这样保存的
private void button1_Click(object sender, EventArgs e)
{
StreamWriter strWriter = new StreamWriter(@"D:\1.txt", false);//保存到C盘的store这个 txt文件里面
strWriter.Write(receiveMsg .Text );
}四 、如果 上面的解决了我想请问高手 就是 正常情况下 要考虑哪些 factor 去考虑 使他 编的更加的 健全 速度稳定 性上 更好 在此 希望大神们 能够 help me
本人 刚刚开始学 所以 不懂得很多 C#socket通信行业数据lwip
[/ while (Connected)
{
try {
if (jx)
{
int recv = newclient.Receive(data);
if (recv == 0)
{
MessageBox.Show("sorry buffer is empty!!!!");
break;
}
y += recv;
Console.WriteLine(recv.ToString());
string stringdata = Encoding.ASCII.GetString(data, 0, recv);
showtext(y.ToString());
showMsg(stringdata );
}
}
catch (Exception e)
{
MessageBox .Show(e.Message );
}
finally
{
}
}
}
]这是 showmsg(string msg)的程序
public void showMsg(string msg)
{
try
{
{
//在线程里以安全方式调用控件
if (receiveMsg.InvokeRequired)
{
MyInvoke _myinvoke = new MyInvoke(showMsg);
receiveMsg.Invoke(_myinvoke, new object[] { msg });
}
else
{
receiveMsg.AppendText(msg); }
}
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
finally
{
}
}
现在 就是 我 发现 速度 不断的下降 不知道 是为什么 然后 我 怀疑 是不是显示这块 有问题 然后 我就把 showmsg 注释掉 发现速度 稳定下来了 能运行 半小时 以上 我想问下我
一、 在不影响 接受速度的情况下我该怎么 编程
二、我想用 异步 是否 好点?
三、或者我把显示 去掉直接 改为实时 保存到 某文件中区 还有 就是保存 最好用 什么形式保存 就是代码 我的 程序里面是 这样保存的
private void button1_Click(object sender, EventArgs e)
{
StreamWriter strWriter = new StreamWriter(@"D:\1.txt", false);//保存到C盘的store这个 txt文件里面
strWriter.Write(receiveMsg .Text );
}四 、如果 上面的解决了我想请问高手 就是 正常情况下 要考虑哪些 factor 去考虑 使他 编的更加的 健全 速度稳定 性上 更好 在此 希望大神们 能够 help me
本人 刚刚开始学 所以 不懂得很多 C#socket通信行业数据lwip
解决方案 »
- StreamReader读流,中断,困扰好久了
- TimeSpan如何格式化成 xx天xx小时的格式
- SqlDataReader的close()方法会不会自动关闭其使用的SqlConnection连接
- 初来乍到,问个问题先
- c#怎么调用api函数GetDeviceCaps呀
- 多线程菜菜问题
- 请问:如何用C#控制AutoCAD?
- ini 文件的读写操作
- 数据更新的又一令人头痛问题(很有挑战性,难啊)
- DataGrid编辑时如何设置TextBox的Width、ReadOnly、TextMode等属性?(100分相送)急!!!
- 求解事件的具体构造和调用步骤
- 有点C#基础,想学下asp。net三层网站开发,大声给点建议,看点哪方面的东西
2.如果确实不想另开辟线程,请将Invoke改为BeginInvoke,它不会阻塞接收数据线程
3.对于这个需求,改为“异步模式”,性能替身效果不大