我正在研究一個將檢查ftp服務器並列出目錄的所有文件的應用程序,該工作完美無缺的背景工作,但是當我使用後臺工作時,發生了很多問題。 第一個問題是我無法從BackGround工作者訪問ListView,我使用了另一種方法(將數組存儲在Array中,然後在BackGround工作進程中完成更新),但它沒有奏效。 然後我使用了另一個隱藏的功能,並執行相同的功能,但程序仍停留在列出的FTP文件中。 實際上,我只是想列出這個目錄的文件(ftp://blah/subdir/[files在這裏)到ListView1。如何在沒有冷凍UI的情況下實現?我試圖使用後臺工作,但它沒有工作,如何使用它的工作? 這裏是代碼使用C#中的BackGround Worker在ListView中使用FTP列出文件
功能
public string[] ListDirectory()
{
string hostdir = textBoxX2.Text + textBoxX3.Text;
var request = createRequest(hostdir,WebRequestMethods.Ftp.ListDirectory);
using (var response = (FtpWebResponse)request.GetResponse())
{
using (var stream = response.GetResponseStream())
{
using (var reader = new StreamReader(stream, true))
{
while (!reader.EndOfStream)
{
listView1.Items.Add(reader.ReadLine());
}
}
}
}
List<string> l = new List<string>();
return l.ToArray();
}
private FtpWebRequest createRequest(string uri, string method)
{
var r = (FtpWebRequest)WebRequest.Create(uri);
r.Credentials = new NetworkCredential(textBoxX4.Text, textBoxX5.Text);
r.Method = method;
return r;
}
上述工程的代碼,但凍結UI,並且當我使用後臺工作,有些工作不喜歡的功能,不能從對象訪問ListView1的有人或類似的東西產生。
任何幫助表示讚賞... 感謝
謝謝你這麼多,這工作完美,但那又如何。和..? – SHoCK
我如何刪除。和.. [DOTS] – SHoCK
我不熟悉這個FTP請求返回的字符串格式,但是如果你能確定目錄名稱的位置,你可以檢查它不是'.'或'.. '。 –