自Windows 10 1709更新 - System.OutOfMemoryException c#.net

时间:2018-01-28 16:47:10

标签: c# windows visual-studio exception out-of-memory

我的winforms应用程序一直运行到最新的Windows 10 1709更新,并且自从更新我的应用程序后,在运行独立.exe或Visual Studio 2017时不断崩溃。应用程序在具有最新1709更新的任何计算机上崩溃。作为测试,我创建了一台Windows 7计算机并且运行良好,并且在Windows 10 1709之前的所有版本都很好。

当我得到System.OutOfMemoryException异常时它非常随机=但是当System.Form.Timer触发或运行一个线程时(通常这可能是一个线索!)。

有一点可以肯定,我并没有忘记! (32GB,50%可用于我的开发机器)。

我不知道造成这种情况的原因并尝试了以下内容:

该解决方案包含大约30个C#项目。 - 我已经从.Net 4.6更新到4.6.1然后更新到4.7和4.7.1 - 更新了所有Nuget项目。 - Windows 7上的编译代码,在Windows 10上运行(崩溃) - 在Windows 7上运行正常。 - 在Windows 10 Home,Windows 10 Pro(1709)上运行。适用于较旧的Windows 10! - 全新安装Windows 10 Pro和32GB RAM(我的开发机器)。 - 禁用计时器和线程(仅在其他地方获得例外)。

回滚操作系统不是一个解决方案,因为我有依赖于运行Windows 10的软件的用户。我在上周一直在看这个没有没有解决方案,希望我能得到一些好的指针,最终解决这个问题。

以下是两个追溯 - 自从我更新到最新的1709后,我有100个这些追溯(通过rollbar.com):

Traceback (most recent call last):
1
at Winforms.Components.ApplicationIdle.System.Windows.Forms.IMessageFilter.PreFilterMessage(System.Windows.Forms.Message& m) in "Winforms.Components.ApplicationIdle" line 17
2
at System.Windows.Forms.Application+ThreadContext.ProcessFilters(System.Windows.Forms.NativeMethods+MSG& msg, System.Boolean& modified) in "System.Windows.Forms.Application+ThreadContext" line 188
3
at System.Windows.Forms.Application+ThreadContext.PreTranslateMessage(System.Windows.Forms.NativeMethods+MSG& msg) in "System.Windows.Forms.Application+ThreadContext" line 2
4
at System.Windows.Forms.Application+ThreadContext.System.Windows.Forms.UnsafeNativeMethods.IMsoComponent.FPreTranslateMessage(System.Windows.Forms.NativeMethods+MSG& msg) in "System.Windows.Forms.Application+ThreadContext" line 0
5
at System.Windows.Forms.Application+ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(System.IntPtr dwComponentID, System.Int32 reason, System.Int32 pvLoopData) in "System.Windows.Forms.Application+ComponentManager" line 349
6
at System.Windows.Forms.Application+ThreadContext.RunMessageLoopInner(System.Int32 reason, System.Windows.Forms.ApplicationContext context) in "System.Windows.Forms.Application+ThreadContext" line 484
7
at System.Windows.Forms.Application+ThreadContext.RunMessageLoop(System.Int32 reason, System.Windows.Forms.ApplicationContext context) in "System.Windows.Forms.Application+ThreadContext" line 20
8
at System.Windows.Forms.Application.Run(System.Windows.Forms.Form mainForm) in "System.Windows.Forms.Application" line 12
9
at CRS.Program.Main() in "CRS.Program" line 456
System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.



at System.Windows.Forms.Internal.WindowsGraphics.FromHdc(System.IntPtr hDc) in "System.Windows.Forms.Internal.WindowsGraphics" line 7
2
at System.Windows.Forms.Internal.WindowsGraphics.FromGraphics(System.Drawing.Graphics g, System.Windows.Forms.Internal.ApplyGraphicsProperties properties) in "System.Windows.Forms.Internal.WindowsGraphics" line 114
3
at System.Windows.Forms.WindowsGraphicsWrapper..ctor(System.Drawing.IDeviceContext idc, System.Windows.Forms.TextFormatFlags flags) in "System.Windows.Forms.WindowsGraphicsWrapper" line 45
4
at System.Windows.Forms.VisualStyles.VisualStyleRenderer.GetPartSize(System.Drawing.IDeviceContext dc, System.Windows.Forms.VisualStyles.ThemeSizeType type, System.IntPtr hWnd) in "System.Windows.Forms.VisualStyles.VisualStyleRenderer" line 58
5
at System.Windows.Forms.RadioButtonRenderer.GetGlyphSize(System.Drawing.Graphics g, System.Windows.Forms.VisualStyles.RadioButtonState state, System.IntPtr hWnd) in "System.Windows.Forms.RadioButtonRenderer" line 13
6
at System.Windows.Forms.ButtonInternal.RadioButtonStandardAdapter.Layout(System.Windows.Forms.PaintEventArgs e) in "System.Windows.Forms.ButtonInternal.RadioButtonStandardAdapter" line 35
7
at System.Windows.Forms.ButtonInternal.CheckableControlBaseAdapter.GetPreferredSizeCore(System.Drawing.Size proposedSize) in "System.Windows.Forms.ButtonInternal.CheckableControlBaseAdapter" line 44
8
at System.Windows.Forms.ButtonBase.GetPreferredSizeCore(System.Drawing.Size proposedConstraints) in "System.Windows.Forms.ButtonBase" line 0
9
at System.Windows.Forms.RadioButton.GetPreferredSizeCore(System.Drawing.Size proposedConstraints) in "System.Windows.Forms.RadioButton" line 9
10
at System.Windows.Forms.Control.GetPreferredSize(System.Drawing.Size proposedSize) in "System.Windows.Forms.Control" line 90
11
at System.Windows.Forms.ButtonBase.GetPreferredSize(System.Drawing.Size proposedSize) in "System.Windows.Forms.ButtonBase" line 36
12
at System.Windows.Forms.Layout.DefaultLayout.LayoutAutoSizedControls(System.Windows.Forms.Layout.IArrangedElement container) in "System.Windows.Forms.Layout.DefaultLayout" line 106
13
at System.Windows.Forms.Layout.DefaultLayout.xLayout(System.Windows.Forms.Layout.IArrangedElement container, System.Boolean measureOnly, System.Drawing.Size& preferredSize) in "System.Windows.Forms.Layout.DefaultLayout" line 0
14
at System.Windows.Forms.Layout.DefaultLayout.LayoutCore(System.Windows.Forms.Layout.IArrangedElement container, System.Windows.Forms.LayoutEventArgs args) in "System.Windows.Forms.Layout.DefaultLayout" line 0
15
at System.Windows.Forms.Layout.LayoutEngine.Layout(System.Object container, System.Windows.Forms.LayoutEventArgs layoutEventArgs) in "System.Windows.Forms.Layout.LayoutEngine" line 0
16
at System.Windows.Forms.Control.OnLayout(System.Windows.Forms.LayoutEventArgs levent) in "System.Windows.Forms.Control" line 47
17
at System.Windows.Forms.Control.PerformLayout(System.Windows.Forms.LayoutEventArgs args) in "System.Windows.Forms.Control" line 105
18
at System.Windows.Forms.Control.System.Windows.Forms.Layout.IArrangedElement.PerformLayout(System.Windows.Forms.Layout.IArrangedElement affectedElement, System.String affectedProperty) in "System.Windows.Forms.Control" line 8
19
at System.Windows.Forms.Control.Scale(System.Drawing.SizeF includedFactor, System.Drawing.SizeF excludedFactor, System.Windows.Forms.Control requestingControl) in "System.Windows.Forms.Control" line 44
20
at System.Windows.Forms.Control.ScaleChildControls(System.Drawing.SizeF includedFactor, System.Drawing.SizeF excludedFactor, System.Windows.Forms.Control requestingControl) in "System.Windows.Forms.Control" line 45
21
at System.Windows.Forms.Control.Scale(System.Drawing.SizeF includedFactor, System.Drawing.SizeF excludedFactor, System.Windows.Forms.Control requestingControl) in "System.Windows.Forms.Control" line 23
22
at System.Windows.Forms.Control.ScaleChildControls(System.Drawing.SizeF includedFactor, System.Drawing.SizeF excludedFactor, System.Windows.Forms.Control requestingControl) in "System.Windows.Forms.Control" line 45
23
at System.Windows.Forms.Control.Scale(System.Drawing.SizeF includedFactor, System.Drawing.SizeF excludedFactor, System.Windows.Forms.Control requestingControl) in "System.Windows.Forms.Control" line 23
24
at System.Windows.Forms.Control.ScaleChildControls(System.Drawing.SizeF includedFactor, System.Drawing.SizeF excludedFactor, System.Windows.Forms.Control requestingControl) in "System.Windows.Forms.Control" line 45
25
at System.Windows.Forms.Control.Scale(System.Drawing.SizeF includedFactor, System.Drawing.SizeF excludedFactor, System.Windows.Forms.Control requestingControl) in "System.Windows.Forms.Control" line 23
26
at System.Windows.Forms.Control.ScaleChildControls(System.Drawing.SizeF includedFactor, System.Drawing.SizeF excludedFactor, System.Windows.Forms.Control requestingControl) in "System.Windows.Forms.Control" line 45
27
at System.Windows.Forms.Control.Scale(System.Drawing.SizeF includedFactor, System.Drawing.SizeF excludedFactor, System.Windows.Forms.Control requestingControl) in "System.Windows.Forms.Control" line 23
28
at System.Windows.Forms.Control.ScaleChildControls(System.Drawing.SizeF includedFactor, System.Drawing.SizeF excludedFactor, System.Windows.Forms.Control requestingControl) in "System.Windows.Forms.Control" line 45
29
at System.Windows.Forms.Control.Scale(System.Drawing.SizeF includedFactor, System.Drawing.SizeF excludedFactor, System.Windows.Forms.Control requestingControl) in "System.Windows.Forms.Control" line 23
30
at System.Windows.Forms.ContainerControl.OnChildLayoutResuming(System.Windows.Forms.Control child, System.Boolean performLayout) in "System.Windows.Forms.ContainerControl" line 81
31
at System.Windows.Forms.Control.OnChildLayoutResuming(System.Windows.Forms.Control child, System.Boolean performLayout) in "System.Windows.Forms.Control" line 0
32
at System.Windows.Forms.Control.OnChildLayoutResuming(System.Windows.Forms.Control child, System.Boolean performLayout) in "System.Windows.Forms.Control" line 0
33
at System.Windows.Forms.Control.OnLayoutResuming(System.Boolean performLayout) in "System.Windows.Forms.Control" line 8
34
at System.Windows.Forms.Control.ResumeLayout(System.Boolean performLayout) in "System.Windows.Forms.Control" line 35
35
at CRS.Dialogs.frmCheckin.InitializeComponent() in "CRS.Dialogs.frmCheckin" line 75929
36
at CRS.Dialogs.frmCheckin..ctor() in "CRS.Dialogs.frmCheckin" line 298
37
at CRS.Dialogs.OpenTicketHelper.OpenTicket() in "CRS.Dialogs.OpenTicketHelper" line 12
38
at CRS.Dialogs.frmTicketTracker.btnNewCheckin_Click(System.Object sender, System.EventArgs e) in "CRS.Dialogs.frmTicketTracker" line 19
39
at System.Windows.Forms.Control.OnClick(System.EventArgs e) in "System.Windows.Forms.Control" line 25
40
at System.Windows.Forms.Button.OnClick(System.EventArgs e) in "System.Windows.Forms.Button" line 46
41
at System.Windows.Forms.Button.OnMouseUp(System.Windows.Forms.MouseEventArgs mevent) in "System.Windows.Forms.Button" line 119
42
at System.Windows.Forms.Control.WmMouseUp(System.Windows.Forms.Message& m, System.Windows.Forms.MouseButtons button, System.Int32 clicks) in "System.Windows.Forms.Control" line 388
43
at System.Windows.Forms.Control.WndProc(System.Windows.Forms.Message& m) in "System.Windows.Forms.Control" line 1647
44
at System.Windows.Forms.ButtonBase.WndProc(System.Windows.Forms.Message& m) in "System.Windows.Forms.ButtonBase" line 0
45
at System.Windows.Forms.Button.WndProc(System.Windows.Forms.Message& m) in "System.Windows.Forms.Button" line 61
46
at System.Windows.Forms.Control+ControlNativeWindow.OnMessage(System.Windows.Forms.Message& m) in "System.Windows.Forms.Control+ControlNativeWindow" line 0
47
at System.Windows.Forms.Control+ControlNativeWindow.WndProc(System.Windows.Forms.Message& m) in "System.Windows.Forms.Control+ControlNativeWindow" line 142
48
at System.Windows.Forms.NativeWindow.Callback(System.IntPtr hWnd, System.Int32 msg, System.IntPtr wparam, System.IntPtr lparam) in "System.Windows.Forms.NativeWindow" line 37
System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.

1 个答案:

答案 0 :(得分:0)

事实证明,实际问题是.Net WebBrowser Control导致大量内存被使用..我同时打开了WebBrowser控件...会吃2GB内存! (如果x32编译的应用程序没有崩溃,x64会持续更长时间!)。

删除它们,app再次消耗25MB!

P.S。切换到CefSharp,看看这种情况是否更好!