多线程问题

tan驴 2017-12-28 02:08:43
我编写了一个服务器,功能是1.接收平板上传来的文件并保存到文件夹;2.控制盒从服务器下载刚刚保存的文件。要求可以好多个平板同时上传,可以好多控制盒同时下载(每个控制盒下载的文件在不同的文件夹里)。这是我的程序,在下载的时候出错“无法访问已释放的对象”,也没办法多个控制盒同时连接,完全没实现多线程。请各位帮帮忙!感激不尽!
...全文
421 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
秋的红果实 2018-01-30
  • 打赏
  • 举报
回复
跟踪下arrMsgRec 目测,需要给下载的代码加锁

Object locker=new Object();
lock(locker)
{
    //下载的代码
}

tan驴 2018-01-30
  • 打赏
  • 举报
回复
引用 4 楼 diaodiaop 的回复:
引用
功能是 1.接收平板上传来的文件并保存到文件夹; 2.控制盒从服务器下载刚刚保存的文件。 要求可以好多个平板同时上传,可以好多控制盒同时下载
这干嘛涉及到socket这么"高端"的东西?直接使用http不就行了吗? 写2个网页 一个用于上传 一个用于下载.... 而且IIS本身就是"多线程"的,所以你的"要求"也是支持的.. 干嘛选择一项自己不熟悉的东西进行开发....
我现在的需要的是解决目前的问题,您这么吐槽我我也不知知道咋办了,问题压根儿没解决啊~
yunqing1201 2018-01-03
  • 打赏
  • 举报
回复
程序逻辑没有错,但在接收数据的线程中,没有判断该 链接是否正常,有可能客户端已经断开链接,这是你继续接收数据肯定报错!!!! 在接收前加一个 if (skc.Poll(100, SelectMode.SelectRead)) { if (skc.Available == 0) //已不在线 { skc.Close(); return; } }
by_封爱 版主 2017-12-29
  • 打赏
  • 举报
回复
引用
功能是 1.接收平板上传来的文件并保存到文件夹; 2.控制盒从服务器下载刚刚保存的文件。 要求可以好多个平板同时上传,可以好多控制盒同时下载
这干嘛涉及到socket这么"高端"的东西?直接使用http不就行了吗? 写2个网页 一个用于上传 一个用于下载.... 而且IIS本身就是"多线程"的,所以你的"要求"也是支持的.. 干嘛选择一项自己不熟悉的东西进行开发....
tan驴 2017-12-28
  • 打赏
  • 举报
回复
这是连接一个控制盒,并且控制盒下载成功以后,弹出来的错误
tan驴 2017-12-28
  • 打赏
  • 举报
回复
请问我应该怎么改正呢,能给出具体的代码吗?
exception92 2017-12-28
  • 打赏
  • 举报
回复
同时下载并不是每一个下载操作都要实例化一个thread。在你的while 循环中 会不断的创建thread对象,但是你所谓包含的“监听“动作的线程压根就不会很好的执行操作,导致资源浪费,程序中会创建上万个无用的线程在运行。 应该清楚是在线程中执行while操作并通过异步模式来同时进行上传、下载操作。

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧