小编Mit*_*oth的帖子

抑制解决方案的警告

通过进入Project Settings > Build > Suppress warnings,我似乎无法在 Visual Studio 2017 的解决方案中抑制警告

在此处输入图片说明

即使当我清理 - 构建,重建等......解决方案时,Visual Studio 也会不断为我提出这些警告。

我昨天在visualstudio.com 的一份报告中提出了这个问题,目前它已被“分类”。是否有其他方法可以在不标记每个引用的情况下抑制解决方案中的警告?

版本:15.6.2

更新: 这很奇怪。Visual Studio 2017 默认使用分号,但逗号有效。

visual-studio visual-studio-2017

11
推荐指数
2
解决办法
2万
查看次数

.NET客户端 - 服务器应用程序被冻结,需要修复想法!

你好,Stack Overflow的好人,
我有一个.NET客户端 - 服务器应用程序,运行着几百个客户端.该项目大约一年前从VB6迁移到.NET,它是卡片/棋盘游戏的平台.虽然我会尝试尽可能多地提供详细信息,但问题是如果内部有40-70名玩家,则会冻结频道.

建筑

1.服务器(.NET 4.0)

  • 分为三个项目:ServerNET,Listener,Channel
  • 监听器就像客户端首先连接的登录服务器.它负责检查版本和帐户信息等内容.还允许客户端选择要连接的通道.它基本上是一个do-while中的TCPListener,可以监听任何试图永久连接的人.这不是双方冻结的原因.
  • Channel表示单个端口,客户端在使用Listener完成后连接到Channel.就像航天飞机一样,这是主要部分.与MIRC频道类似,它将所有用户绑定在内,大部分数据都发送给同一频道内的人,如聊天,以及由服务器托管的其他玩家可以加入的游戏.这是一个控制台应用程序,可作为玩家的中心.播放器信息保存在"Client"类中,该类包括TCPClient和一些其他属性.每个客户端都使用一个线程运行,并进行由服务器处理的异步调用.这些"Client"对象也保存在名为"ClientCollection"的集合类中.当内部大约有40-70名玩家时,频道会被冻结.每个频道最多允许100名玩家.
  • ServerNET是整个系统所涉及的所有其他常规内容,而不是通道特定的.这是一个表单应用程序,并运行服务器选项之类的东西.

2.客户端(.NET 2.0)

  • 使用TCPClient运行,主要是单线程,而服务器是多线程.
  • 必须使用.NET 2.0.
  • 主要由视觉效果和其他非重要内容组成.

当有40多个客户端连接到一个通道时,它开始被完全随机冻结(或者就是我们现在所拥有的,没有任何指导或足够的数据来指出什么是完全错误的).我们真的不认为网络流量是问题(不太确定)因为我们已经在具有各种设置的不同服务器机器上尝试过它.我们使用的所有服务器机器都能够处理大量的过程硬件.所以这是关于方法以及代码方面的内容.

我们努力解决这个问题的原因是我们不确定是什么导致了这个问题.请查看以下示例:
系统A在其频道#1中有55个人在线,并且无论如何它都不会被冻结.系统A使用A1 IP,通道在16xxx端口.
系统B在其频道#4中有25人在线,并且随机冻结一两分钟.系统B使用B1 IP和18xxx作为通道端口.它与系统A在同一台机器上,不会被冻结.

总而言之,它看起来与在线人数无关,但在数字上升时更常发生.

我们尝试在Channel项目的循环do循环中滚动Application.DoEvents(),认为某些X进程导致通道冻结状态几分钟,从而导致通道暂停.然后它会在几秒钟内执行在冻结时排队的所有操作.每个频道的CPU使用率平均在7%-20%之间,看起来好像越来越好.然而,这不是永久有效的解决方案.

我们怀疑的事情:

  • 保存玩家和TCPClients的ClientCollection继承自CollectionBase.也许这会在同步过程中造成一些混乱.这曾经是当天的阵列,我们遇到的问题更少.也许它不应该从CollectionBase继承,而是其他什么?
  • 我们使用SyncLock(在C#中锁定)来同步ClientCollection.(虽然我们在开始使用锁之前遇到了这个问题)

服务器信息
Intel Xeon X3460 2.80GHz
16 GB RAM
64位Windows Server 2008 Enterprise

我知道如果不看完整个代码就无法解决问题,但我很遗憾我无法发布代码.相反,我正在寻找一个让我走向某个方向的想法.但是,我们很乐意分享解决此问题的任何其他信息.

感谢大家的帮助!

.net client

5
推荐指数
1
解决办法
619
查看次数

合并列表中的重复项

在我当前的测试项目中,我希望将所有对象合并到一个列表中,其中一个值与另一个对象中的值相同,然后我想检查这些对象下的其他值并将它们组合在一起,如下示例:

Object1
{
id = 111,
price1 = 10,
price 2 = 20
}

Object2
{
id = 222,
price1 = 10,
price 2 = 20
}

Object3
{
id = 111,
price1 = 30,
price 2 = 70
}

Object4
{
id = 444,
price1 = 15,
price 2 = 25
}
Run Code Online (Sandbox Code Playgroud)

从上面的对象 1 和对象 3 将根据其相关的“id”值进行组合,然后将它们的价格组合起来,并会导致以下对象替换列表中的对象 1 和对象 3:

NewObject
{
id = 111,
price1 = 40,
price 2 = 90
}
Run Code Online (Sandbox Code Playgroud)

最终列表将如下所示:

NewObject
{
id = 111, …
Run Code Online (Sandbox Code Playgroud)

c# linq list

2
推荐指数
1
解决办法
2024
查看次数

标签 统计

.net ×1

c# ×1

client ×1

linq ×1

list ×1

visual-studio ×1

visual-studio-2017 ×1