小编Nic*_*aux的帖子

编码指南:如何拆分大型源文件?

我正在处理的项目刚刚在主C#文件中命中了4200行,这导致IntelliSense需要几秒钟(有时最多6个左右)才能响应,在此期间Visual Studio会锁定.我想知道其他人如何分割他们的文件以及是否达成了共识.

我试图寻找一些指南,并找到了谷歌的C++指南,但我看不出有关语义的任何信息,如函数大小和文件大小; 也许它就在那里 - 我有一段时间没有看过它.

那你怎么拆分你的文件?您是按照所服务的功能对方法进行分组吗?按类型(事件处理程序,私人/公共)?你在什么尺寸限制下分割功能?

为了澄清,有问题的应用程序处理数据 - 所以它的界面是一个大网格,一切都围绕网格.它有一些用于管理的对话框表单,但它都是关于数据的.它之所以如此之大,是因为存在大量错误检查,事件处理以及网格设置为主细节,每行有三个网格(但主扩展上的这些加载).我希望这有助于澄清我的目标.

c# oop coding-style class-design visual-studio

7
推荐指数
4
解决办法
9211
查看次数

引用外部命名空间中的方法/变量比完全包含它更具内存效率吗?

那么内存使用情况如下:

System.Threading.Thread.Sleep(500);
Run Code Online (Sandbox Code Playgroud)

VS

using System.Threading;
...
Thread.Sleep(500);
Run Code Online (Sandbox Code Playgroud)

我原以为你在内存中使用的命名空间越少越好,但我听说前一个例子必须将命名空间加载到内存中.我知道Sleep这不是一个记忆饥饿方法的最好例子,但它只是一个例子.

c#

3
推荐指数
1
解决办法
130
查看次数

什么是关闭WCF线程的最佳方法?

我有一个申请需要很长时间才能完成.当我关闭应用程序时,它会尝试处理许多执行TCP扫描,WCF P2P尝试等的线程.问题在于一个WCF线程在一个方法上停顿了大约17秒.

IP2PAuthenticationService server;
ChannelFactory<IP2PAuthenticationService> channelFactory;
channelFactory = new ChannelFactory<IP2PAuthenticationService>(binding, endpointAddress);

server = channelFactory.CreateChannel();
string result = server.SendMyDetails(myContract, "foo");
Run Code Online (Sandbox Code Playgroud)

所有这一切都发生在一个线程中.当表单关闭时,它会尝试处理该线程

 if (prospectCrawlerThread != null)
 {
      prospectCrawlerThread.Abort();
      //prospectCrawlerThread.Join();
      prospectCrawlerThread = null;
  }
Run Code Online (Sandbox Code Playgroud)

我通过取消注释.Join(),并通过暂停调试并查看仍在运行的线程来证实这一点.

什么是摆脱这个线程的最佳方法?

编辑:将线程设置为背景似乎使其更快 prospectCrawlerThread.IsBackground = true;

c# wcf multithreading

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