【发布时间】:2012-04-02 04:40:31
【问题描述】:
我有运行列表框中所有文件的 Winform 应用程序, 我正在使用 Pcapdotnet DLL 将数据包发送到我的网络适配器,过程是我正在获取 Wireshark 捕获文件并使用此文件发送所有数据包。 每个文件都将与 BackgroundWorker 一起运行,并在下次在我的列表框 srart 中完成后运行等。 我添加了一个复选框,当此复选框处于选中状态时,所有文件同时运行。 当它运行时我的应用程序崩溃并出现错误:调用的目标已引发异常:
static void Main()
{
Adapters addr = new Adapters();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new mainWindow());
}
最后一行收到的错误 (Application.Run(new mainWindow());)
这是我在同时运行中处理的代码:
for (int i = 0; i < listBoxFiles.Items.Count; i++)
{
string filePath = (string)listBoxFiles.Items[i];
playCount = 0;
BackgroundWorker bgWsim = new BackgroundWorker();
bgWsim.WorkerReportsProgress = true;
bgWsim.ProgressChanged += new ProgressChangedEventHandler(bgW_ProgressChanged);
bgWsim.DoWork += new DoWorkEventHandler(
(s3, e3) =>
{
while ((playCount < numberOfLoops) && (bContinuePlay)) //play the capture
{
for (int k = 0; (k < listBoxFiles.Items.Count) && (bContinuePlay); k++)
{
class = new myClass(filePath , playSpeed);
class.evePacketProgress += new class.dlgPacketProgress(
(progressCount) =>
{
bgWsim.ReportProgress(progressCount, class);
});
if (selectedAdapter != null)
{
bContinuePlay = class.playCapture(selectedAdapter._packetDevice);
}
playCount++;
Thread.Sleep((int)delay);
}
}
});
bgWsim.RunWorkerCompleted += new RunWorkerCompletedEventHandler(
(s3, e3) =>
{
groupBoxSelect.Enabled = true;
groupBoxOptions.Enabled = true;
groupBoxInfo.Enabled = true;
btnPlay.Enabled = true;
}
);
bgWsim.RunWorkerAsync();
}
如何调试此错误并找到问题所在?
错误截图:
【问题讨论】:
-
您可以通过按 F5 并使用断点来调试此错误。
-
你从哪里得到异常?似乎是 winforms 控件的多线程问题
-
你能给我们完整的异常文本和堆栈跟踪吗?
-
崩溃发生在我开始运行所有文件后,有时在几秒钟后发生,有时在几分钟后发生
-
我该怎么做? (异常文本和堆栈跟踪)