我正在处理的项目刚刚在主C#文件中命中了4200行,这导致IntelliSense需要几秒钟(有时最多6个左右)才能响应,在此期间Visual Studio会锁定.我想知道其他人如何分割他们的文件以及是否达成了共识.
我试图寻找一些指南,并找到了谷歌的C++指南,但我看不出有关语义的任何信息,如函数大小和文件大小; 也许它就在那里 - 我有一段时间没有看过它.
那你怎么拆分你的文件?您是按照所服务的功能对方法进行分组吗?按类型(事件处理程序,私人/公共)?你在什么尺寸限制下分割功能?
为了澄清,有问题的应用程序处理数据 - 所以它的界面是一个大网格,一切都围绕网格.它有一些用于管理的对话框表单,但它都是关于数据的.它之所以如此之大,是因为存在大量错误检查,事件处理以及网格设置为主细节,每行有三个网格(但主扩展上的这些加载).我希望这有助于澄清我的目标.
那么内存使用情况如下:
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这不是一个记忆饥饿方法的最好例子,但它只是一个例子.
我有一个申请需要很长时间才能完成.当我关闭应用程序时,它会尝试处理许多执行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;