问题没解决,再来一贴,c#多线程调用dll,数据冲突的问题。

rokky 2014-10-14 01:23:05
最近在学习编写c#socket 多线程 异步处理客户端请求的一些东西。客户端发出请求,服务器端根据请求类型,调用不同的dll来进行异步的具体处理,这些都实现了。但是现在发现个问题,在比较多并发的情况下,调用dll处理后,会得到不正确的结果,感觉是A客户端发出的请求,接受到的处理结果,其实是由B客户端发出请求的处理结果。这个是怎么回事呢?或者说这种处理方式本身就是不正确的,应该怎么解决呢?
...全文
91 点赞 收藏 5
写回复
5 条回复
於黾 2014年10月14日
多线程调用dll,你的处理结果保存在哪里? 如果仅仅是一个全局静态变量,或即使不是静态,全局也只定义了同一组变量,那么必然导致数据冲突 你需要将dll封装到类里去,不同的用户各自实例化一个出来
回复 点赞
rokky 2014年10月14日
引用 2 楼 bdmh 的回复:
也就是说你没有将信息和客户端连接作对应,所以信息错位,所以加一些头信息,用来和连接匹配 同时做好同步,不要另外一个线程改写了当前线程的数据
做好同步?能具体说说吗?
回复 点赞
rokky 2014年10月14日
不是的,我觉得是在多线程调用dll时产生的问题
回复 点赞
bdmh 2014年10月14日
也就是说你没有将信息和客户端连接作对应,所以信息错位,所以加一些头信息,用来和连接匹配
同时做好同步,不要另外一个线程改写了当前线程的数据
回复 点赞
rokky 2014年10月14日
dll也是c#编写的。封装了一些方法,处理的结果返回string。
回复 点赞
发动态
发帖子
C#
创建于2007-09-28

8.4w+

社区成员

64.0w+

社区内容

.NET技术 C#
社区公告
暂无公告