C#异常已被调用的目标引发
从IDE或exe运行我的C#.net 4.5 windows窗体项目时出现此错误,我没有清楚或固定的场景,并且我无法找到正在抛出异常的线索。 我想知道如何获得错误的来源并修复它,或者至少以不会导致exe崩溃的方式处理它! 以下是例外的详细信息:
信息:
异常是由调用的目标引发的。
内部异常消息:
尝试读取或写入受保护的内存。 这通常表明其他内存已损坏。
内部异常堆栈跟踪:
System.Windows.Forms.UnsafeNativeMethods.CallWindowProc(IntPtr wndProc,IntPtr hWnd,Int32 msg,IntPtr wParam,IntPtr lParam)at System.Windows.Forms.NativeWindow.DefWndProc(Message&m)at System.Windows.Forms.Control.DefWndProc (Message&m)at System.Windows.Forms.TextBoxBase.WndProc(Message&m)at System.Windows.Forms.RichTextBox.WndProc(Message&m)at System.Windows(Message&m)at System.Windows.Forms.Control.WndProc(Message&m)at System.Windows.Forms.TextBoxBase.WndProc .Forms.Control.ControlNativeWindow.OnMessage(Message&m)at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&m)at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd,Int32 msg,IntPtr wparam,IntPtr lparam )在System.Windows.Forms.UnsafeNativeMethods.SendMessage(HandleRef的hWnd,的Int32味精,wParam中的Int32,EDITSTREAM LPARAM)在System.Windows.Forms.RichTextBox.StreamIn(流数据,的Int32标志)
在System.Windows.Forms.RichTextBox.StreamIn(字符串str,的Int32标志)在System.Windows.Forms.RichTextBox.set_Rtf(字符串值)TragTask.UserControls.CommentControl.SetCommentInfo()在C: TFS Tragging Tragging Solutions TragTask TragTask UserControls CommentControl.cs:第76行
在C: TFS Tragging Tragging Solutions TragTask TragTask UserControls CommentControl.cs中:TragTask.UserControls.CommentControl.set_Comment(TaskMilestoneTimerAndComment value)
在C: TFS Tragging Tragging Solutions TragTask TragTask Forms frmTaskDetails.cs中的TragTask.Forms.frmTaskDetails.d__24.MoveNext()中:第339行在System.Runtime.CompilerServices.AsyncMethodBuilderCore.MoveNextRunner.InvokeMoveNext(Object stateMachine )在System.Threading.ExecutionContext.Run(ExecutionContext executionContext,ContextCallback回调,对象状态,布尔preserveSyncCtx)在System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext,ContextCallback回调,对象状态,布尔preserveSyncCtx)System.Runtime.CompilerServices。 AsyncMethodBuilderCore.MoveNextRunner.Run()at System.Runtime.CompilerServices.TaskAwaiter。<> c__DisplayClass11_0.b__0()at System.Runtime.CompilerServices.AsyncMethodBuilderCore.ContinuationWrapper.Invoke()at System.Threading.Tasks.SynchronizationContextAwaitTaskContinuation。<> c。 <.cctor> b__8_0(对象状态)
TargetSite
{System.Object InvokeMethod(System.Object,System.Object [],System.Signature,Boolean)}
目标网站,声明类型:
{Name =“RuntimeMethodHandle”FullName =“System.RuntimeMethodHandle”}
堆栈跟踪:
在System.RuntimeMethodHandle.InvokeMethod在System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(对象目标,对象[]参数,签名Sig,布尔构造)(对象OBJ,对象[]参数,对象[]参数)在System.Delegate.DynamicInvokeImpl( (System.Windows.Forms.Control.InvokeMarshaledCallbackDo(ThreadMethodEntry tme))在System.Windows.Forms.Control.InvokeMarshaledCallbackHelper(Object obj)在System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext,ContextCallback回调,对象状态,布尔preserveSyncCtx)在System.Threading.ExecutionContext.Run(的ExecutionContext的ExecutionContext,ContextCallback回调,对象的状态,布尔preserveSyncCtx)在System.Threading.ExecutionContext.Run(的ExecutionContext的ExecutionContext,ContextCallback回调,在System.Windows.Forms的对象的状态)。 Control.vokeMarshaledCallback(ThreadMethodEntry tme)在System.Windows.Forms.Control.InvokeMarshaledCallbacks()
在System.Windows.Forms.Control.WndProc在System.Windows.Forms.Control.ControlNativeWindow.OnMessage在System.Windows.Forms.Control.ControlNativeWindow.WndProc在System.Windows(邮件&m)(邮件&m)(邮件&m) .Forms.NativeWindow.Callback(IntPtr hWnd,Int32 msg,IntPtr wparam,IntPtr lparam)at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG&msg)
System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID,Int32 reason,Int32 pvLoopData)at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason,ApplicationContext context )在System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32原因,ApplicationContext上下文)在System.Windows.Forms.Application.Run()在TragTask.Program.Main()
更新后,C.Evenhuis指出,这与CommentControl.SetCommentInfo方法有关,我认为需要在我的问题中添加此方法(请注意,tb_comment是一个RichTextBox控件):
public bool SetCommentInfo()
{
try
{
this.SuspendLayout();
lbl_user.Text = "userName";
lbl_dateTime.Text = mComment.DateTimeAdded.ToString("dd/MM/yyyy HH:mm:ss");
if (mComment.Comment.TrimStart().StartsWith("{rtf1", StringComparison.Ordinal))
{
tb_comment.Clear();
tb_comment.Text = "";
tb_comment.Rtf = mComment.Comment;
}
else
tb_comment.Text = mComment.Comment;
return true;
}
catch (Exception ex)
{
Utils.Global.ErrorLog("SetCommentInfo", ex, true);
return false;
}
finally
{
this.ResumeLayout();
}
}
MSDN:
损坏的进程状态异常是指示进程状态已损坏的异常。 不建议在此状态下执行您的应用程序。
默认情况下,公共语言运行时(CLR)不会将这些异常传递到托管代码,并且try / catch块(以及其他异常处理子句)不会被调用。 如果您确定要维护对这些异常的处理,则必须将HandleProcessCorruptedStateExceptionsAttribute属性应用于要执行其异常处理子句的方法。 只有在同时具有HandleProcessCorruptedStateExceptionsAttribute和SecurityCriticalAttribute属性的方法中,CLR才会将损坏的进程状态异常传递给适用的异常子句。
您也可以将其添加到应用程序的配置文件中。 这将确保在没有HandleProcessCorruptedStateExceptionsAttribute或SecurityCriticalAttribute特性的情况下将损坏的状态异常传递到异常处理程序。 此配置元素对在.NET Framework 4之前的版本中编译但在.NET Framework 4或更高版本中运行的应用程序没有影响; 损坏的状态异常将继续为这些应用程序提供。 HandleProcessCorruptedStateExceptionsAttribute属性在部分信任或透明代码中遇到时会被忽略,因为可信主机不应允许不受信任的加载项捕获并忽略这些严重的异常。
链接地址: http://www.djcxy.com/p/93511.html上一篇: C# Exception has been thrown by the target of an invocation