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循环里面,当输出了最后一条数据之后就会报出异常

backgroundWorker是线程吧

你的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里用啥存放这种数据最好?

C# winform 引用问题 引用了SHDocVw.dll。 把exe单独拷出来就报异常。 有啥方法解决?

C# - Winform: 在窗体加载的过程中截获异常,如何不让窗体显示出来。

c# winform程序.在控制面板中调整了DPI设置显示异常

C# winform程序调用第三方动态库出现问题

库 .NET 版本异常 [重复]