如何调试潜在的内存泄漏?

我编写了Windows服务程序来做日常工作。 我安装它到Windows服务,它会唤醒并做一些事情然后thread.sleep(5min) 代码很简单,但我注意到了潜在的内存泄漏。 我使用DOS tasklist跟踪它并绘制了一个图表: 我可以说很明显存在内存泄漏,尽管很少。 我的代码如下,请帮我找到潜在的泄漏。 谢谢。 public partial class AutoReport : ServiceBase { int Time = Convert.ToInt32(AppSettings[“Time”].ToString()); private Utilities.RequestHelper requestHelper = new RequestHelper(); public AutoReport() { InitializeComponent(); } protected override void OnStart(string[] args) { Thread thread = new Thread(new ParameterizedThreadStart(DoWork)); thread.Start(); } protected override void OnStop() { } public void DoWork(object data) { […]

在特定线程上运行工作

我想在该单独的线程中有一个特定的线程,队列用于任务和进程任务。 应用程序将根据用户使用情况制作任务,并将其排入任务队列。 然后单独的线程处理任务。 即使队列为空,保持线程处于活动状态并使用它来处理排队任务也是至关重要的。 我已经尝试了几个带有BlockingCollection的TaskScheduler实现,并将并发限制为只有一个线程,但是当队列变空并且任务由其他线程处理时,似乎线程被释放。 你能否至少向我推荐一些如何实现这一目标的消息来源? tl; dr尝试限制一个特定线程来处理动态添加到队列的任务。 EDIT1: 这是使用WCF和.NET framework 4.6的实验性Web应用程序。 在WCF库中,我尝试使用一个线程处理任务来实现此行为。 这一个线程必须使用外部dll库初始化prolog,然后使用prolog。 如果在进程中使用了其他线程,则库会抛出AccessViolationException 。 我做了一些研究,这很可能是因为该库中的线程管理不当。 我实现了我到处都有锁的工作方式。 我现在正在尝试重新实现并使其异步,因此我不会使用锁定来阻止主线程。 我不在我的电脑上,但是当我今天晚些时候回家时,我会提供一些代码。

价值不在预期范围内

我使用以下代码更新列表框,这是从Web服务接收列表 – client.userKeywordsCompleted += new EventHandler(client_userKeywordsCompleted); client.userKeywordsAsync(); 使用 – void client_userKeywordsCompleted(object sender, userKeywordsCompletedEventArgs e) { string result = System.Convert.ToString(e.Result); for (int i = 0; i < e.Result.Count; i++) { ListBoxItem lbitem = new ListBoxItem(); lbitem.Name = "lb_" + i; lbitem.Content = e.Result[i]; lbitem.AddHandler(UIElement.MouseLeftButtonDownEvent, new MouseButtonEventHandler(ListBoxItem_DoubleClickEvent), true); listBox1.Items.Add(lbitem); } 这工作正常,因为我在加载子窗口时使用它,因此列表框从数据库中获取列表,但是当用户选择列表框中的一个项目时,他们可以选择编辑所选项目。 因此编辑就位,有一个编辑按钮,用于更新数据库中表格中的列。 然后在按钮单击时,我再次调用上述代码以使用新凭据更新列表框。 然而,这给bcak带来了错误 – “Value does […]

将两个列表合并为一个并对项目进行排序

有没有办法合并(没有欺骗的联合)两个给定的列表,并使用ONE for循环以排序的方式存储项目? 另外,我正在寻找一种不使用API​​方法的解决方案(例如,union,sort等)。 示例代码。 private static void MergeAndOrder() { var listOne = new List {3, 4, 1, 2, 7, 6, 9, 11}; var listTwo = new List {1, 7, 8, 3, 5, 10, 15, 12}; //Without Using C# helper methods… //ToDo……………………….. //Using C# APi. var expectedResult = listOne.Union(listTwo).ToList(); expectedResult.Sort();//Output: 1,2,3,4,5,6,7,8,9,10,11,12,15 //I need the same result […]

查找数据库上的打开连接数

我的web应用程序是在asp.net 2.0,c#2.0和sql server 208中如何找到我的sql server 2008数据库上的打开连接数。有没有办法清除连接池。因为我的网站托管在共享主机上他们提供的连接有限。 在我的编码中,我在使用后关闭了所有连接,但我仍然收到暂停数据库的警告。 任何人都可以告诉我如何在数据库上找到数字打开连接以及如何清除连接池。 我使用using语句进行连接,并在finally块中使用后关闭所有连接。 所以尽管有错误,它会关闭oped连接。 提前致谢。

如何使用AutoMapper深度克隆包含IList属性的对象

我正在尝试使用AutoMapper深度克隆以下类: public class MainData { public MainData() { Details = new List(); } public int Id { get; private set; } public DateTime LastUpdate { get; private set; } public IList Details { get; private set; } public int Prop1 { get; set; } public int Prop2 { get; set; } public void AddDetail(Detail detail) […]

AngularJS与ASP.NET MVC混淆

请注意:我在Stack Overflow中已经阅读了类似的一些问题但是没有从这些答案中得到我想要的清晰概念。 我清楚地了解为什么以及如何将AngularJS与ASP.NET Web API一起使用。 但我对使用AngularJS和ASP.NET MVC感到困惑! 在使用ASP.NET Web API的AngularJS的情况下: Web API控制器方法返回数据,AngularJS调用Web API控制器方法并捕获数据,然后在View中呈现数据。 这非常符合逻辑! 在使用ASP.NET MVC的AngularJS的情况下: ASP.NET MVC Controller方法本身返回带有数据的View / View。 那么AngularJS与ASP.NET MVC有什么用? 尽管如此,如果我想在ASP.NET MVC中使用AngularJS,那么我必须从ASP.NET MVC控制器方法返回JSON而不是MVC视图。 我的问题是: 为了将AngularJS与ASP.NET MVC一起使用,从ASP.NET MVC控制器方法返回JSON而不是MVC视图是否合乎逻辑? 如果我这样做,有什么好处吗? AngularJS与ASP.NET MVC的实际用途是什么? 或者我在哪里可以将AngularJS与ASP.NET MVC一起使用?

从其他线程调用主线程中的方法

我试图在C#应用程序中同时运行3个级别的计时器,例如: T1将在应用程序的开始运行,然后在其Tick事件中,T2将启动,然后在T2的tick事件上,T3将启动。 最后,在T3的tick事件中,应该在应用程序的主线程中完成某些操作 我的问题似乎是主线程中的代码在被其他线程调用时不起作用 我应该怎么做让主线程通过其他线程的调用来运行它的函数?

c#ping一个网站? (保持活力服务)

有没有一种方法在c#中能够每隔15分钟ping一个url并从服务器获得响应? 我想尝试看看.net是否可用于构建一个简单的工具,让asp.net网站调用重新构建,以便第一个用户在应用程序启动时不会产生负载惩罚。 或者,如果有人有另一种方法来实现同一目标……想法? 提示? 想法?

如何在Linq中添加两个列表,所以addedList = listOne + listTwo ?

我想添加两个数字类型的列表,使addList [x] = listOne [x] + listTwo [x] 列表的输出需要是Generic.IEnumerable,我可以在将来的linq查询中使用。 虽然我能够使用下面的代码来做到这一点,但我不禁觉得必须有更好的方法。 有任何想法吗? List firstList = new List(new int[] { 1, 3, 4, 2, 5, 7, 2, 5, 7, 8, 9, 0 }); List secondList = new List(new int[] { 4, 6, 8, 3, 1, 5, 9, 3, 0 }); int findex = 0; ILookup flookup = […]