我構建的應用程序使用pcapdot.net播放Wireshark文件並將數據包發送到網卡。無法在多個位置添加或插入項目MyFile
在我的應用程序中,我得到目錄根目錄,並且只添加最近24小時內的新文件。 首先,我將目錄中的所有文件添加到List<string>
,然後添加到我的ListView
。 現在我的應用程序完成播放我想清除我的列表的所有文件後,清除我的ListView,然後再次搜索最近24小時內的文件,並將其添加到我的ListView
。 我的問題是在這個地方,再次將文件添加到我的列表並嘗試將文件添加到我的ListView
應用程序崩潰,錯誤無法在多個位置添加或插入項目'file.pcap'。您必須先將其從當前位置移除或克隆。
後完成打我的文件,我是乾淨的名單,ListView和重新添加文件和播放:
lvFiles.Items.Clear();
filesList.RemoveRange(0, filesList.Count - 1);
addFiles();
playFiles();
addFiles(); - AFF上所有的文件列表我的ListView:
private void addFiles()
{
BackgroundWorker backgroundWorker = new BackgroundWorker();
backgroundWorker.WorkerReportsProgress = true;
backgroundWorker.DoWork += new DoWorkEventHandler(
(s3, e3) =>
{
filesList = SafeFileEnumerator.EnumerateFiles(pathToSearch, "*.pcap",
SearchOption.AllDirectories).ToList();
});
backgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(
(s3, e3) =>
{
if (filesList.Count != 0)
AddFilesToListView(filesList);
});
backgroundWorker.RunWorkerAsync();
}
playFiles() - 在我的ListView發揮我的所有文件:
private void playFiles()
{
lockButtons();
string filePath = string.Empty;
BackgroundWorker backgroundWorker = new BackgroundWorker();
backgroundWorker.WorkerReportsProgress = true;
backgroundWorker.DoWork += new DoWorkEventHandler(
(s3, e3) =>
{
for (int i = 0; i < lvFiles.Items.Count && shouldContinue; i++)
{
this.Invoke((MethodInvoker)delegate
{
lvFiles.EnsureVisible(i);
lvFiles.Items[i].Selected = true;
lvFiles.Select();
filePath = lvFiles.Items[i].Tag.ToString();
toolStripStatusLabel.Text = string.Format("Current file: {0}", lvFiles.Items[i].Text);
});
PcapFile pcapFile = new PcapFile();
pcapFile.sendQueue(filePath, adapter);
this.Invoke((MethodInvoker)delegate { lvFiles.Items[i].Selected = false; });
}
});
文件添加到我的ListView:
private void addFileToListBox(string filePath, string duration)
{
item = new ListViewItem(new string[] { new FileInfo(filePath).Name, duration, "Waiting" });
item.Tag = new FileInfo(filePath).FullName;
this.Invoke((MethodInvoker)delegate { lvFiles.Items.Add(item); });
}
也許「某人」仍然擁有該文件?
顯示一些代碼。特別是在您添加到ListView並清除ListView的地方。 –
看到我的更新.. – user1269592
你在addFileToListBox方法中聲明名爲'item'的ListViewItem? – Mitch