c# winForm开发的一个异常问题,异常描述是:"调用的目标发生了异常问题"
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# winForm开发的一个异常问题,异常描述是:"调用的目标发生了异常问题"相关的知识,希望对你有一定的参考价值。
我开发一个测试软件,每做一种测试就使用一个backgroundWorker,在backgroundWorker的RunWorkerCompleted事件里输出测试结果,然后触发下一个测试的backgroundWorker.RunWorkerAsync()事件!在我执行完最后一个测试之后,在RunWorkerCompleted事件里我想输出测试结果,再弹出一个MessageBox通过用户测试完毕,可以这里我加上了一个数据数据之后,软件会输出测试数据,然后就报错说"调用的目标发生了异常问题",这个异常是在Program.cs的Application.Run(new Form1());这一句报出来的,但是如果我不执行输出结果的操作,我的程序可以直接弹出对话框的操作,并且没有异常!谁能知道这是怎么事实??下面就是我的最后的测试backgroundWorker的RunWorkerCompleted事件代码:
private void backgroundWorker8_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
//APScan操作
if (errorState)
//有错误信息
textBox1.AppendText("APScan操作发生错误,错误信息:" + errorMessage);
textBox1.AppendText(" " + "\n");
else
//操作无错误
textBox1.AppendText("扫描结果:" + "\n");
textBox1.AppendText(" " + "\n");
for (int i = 0; i < al.Length; i++)
textBox1.AppendText("记录" + (i + 1).ToString() + "< SSID:" + al[i][0].ToString() + ",MAC地址:" + al[i][1].ToString() + ",信道号:" + al[i][2].ToString() + ",RRSI平均值:" + al[i][3].ToString() + ",RRSI最大值:" + al[i][4].ToString() + ",RRSI最小值:" + al[i][5].ToString() + ",响应率:" + al[i][6].ToString() + "%,测试时间:" + times);
textBox1.AppendText(" " + "\n");
MessageBox.Show("用户配置的操作已经全部完成!", "任务提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
如果注释掉textBox.appendText()的输出代码就是没错了!
异常的类是:TragetInvocationException
al是我用来传结果的ArrayList[] al;
经过测试,异常是在我的for循环里面,当输出了最后一条数据之后就会报出异常
你的textbox1不是这个线程创建的,这个线程不能跨进程访问,简单的方法,用委托(invoke),把中间的结果实时的带出来显示 参考技术A zzh_161 说得没错。.net2.0已经不像1.0可以跨线程调用窗体可视化控件了(出于安全考虑)。但提供了委托这一安全的方法。
Control.Invoke (Delegate, Object[])
用这个方法可以很简单的解决。
库 .NET 版本异常 [重复]
【中文标题】库 .NET 版本异常 [重复]【英文标题】:Library .NET version exception [duplicate] 【发布时间】:2014-10-17 22:46:20 【问题描述】:我正在尝试使用 C# 和 .NET 框架进行 Winforms 开发的第一步。 我想做一个小用户 CRUD 应用程序。我在 SQLite 数据库中填充了测试数据。
所以,我创建了一个空白项目解决方案,并添加了一个名为“DataBundle”的“类库”项目。
在 DataBundle 中,拥有数据库的实体类,与 Entity Framework 映射。
另外,我创建了一个控制台应用程序来测试我的 DataBundle。应用程序构建正确,但在尝试运行查询时应用程序抛出异常。
这是我的代码:
Console.WriteLine("Testeando el DataBudnle ...");
mainContext _dao = new mainContext();
Zone city = new Zone
name = "Ensenada"
;
Console.WriteLine("Existen 0 ciudades registradas ...", _dao.Zones.Count());
Console.ReadLine();
异常信息是:
混合模式程序集使用“v2.0.50727”版本的 运行时,并且不能在 4.0 运行时中加载而无需额外的 配置信息。
我使用的是 Visual Studio 2010 Ultimate,安装了 .NET 4 Framework 的 Windows 7 Professional。
有什么想法吗?
【问题讨论】:
***.com/questions/2455654/… 【参考方案1】:按照 Steve 的建议,将其添加到控制台应用程序 App.config 文件中
<?xml version="1.0"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>
【讨论】:
以上是关于c# winForm开发的一个异常问题,异常描述是:"调用的目标发生了异常问题"的主要内容,如果未能解决你的问题,请参考以下文章
C# winform 引用问题 引用了SHDocVw.dll。 把exe单独拷出来就报异常。 有啥方法解决?
C# - Winform: 在窗体加载的过程中截获异常,如何不让窗体显示出来。