我一直在做一個小項目上,並關閉了一段時間,我覺得我是接近,但它有「問題」。我們的想法是FTP文件到一個第三方,他們處理它和5-10分鐘後,他們產生一個結果集,它需要得到下載,並在我們這邊處理。的AsyncCallback在.NET網頁逃跑
因此,代碼可能有點簡單,它只是一些我拼湊
if (!Page.IsPostBack) { string baseLocation = "C:\\temp\\"; string fn = baseLocation + "fxxxupld.inc"; ftp = new FtpClient(FTPServer, FTPUserName, FTPPassword); ftp.Login(); ftp.Upload(fn); AsyncCallback callback = new AsyncCallback(CloseConnection); ftp.ChangeDir("results"); string[] Files = ftp.GetBloombergUploadList(); int CHigh = Files.GetUpperBound(0); String LatestFile = CheckForNewFile(CHigh, ftp); ftp.BeginDownload(LatestFile, "c:\\temp\\Results.txt", callback); } private static string CheckForNewFile(int CHigh,FtpClient ftp) { int NHigh = 0; string LatestFile = ""; while (CHigh >= NHigh) { string[] Files = ftp.GetBloombergUploadList(); NHigh = Files.GetUpperBound(0); LatestFile = Files[NHigh-1].ToString(); Thread.Sleep(3000); } return LatestFile; } private void CloseConnection(IAsyncResult result) { Debug.WriteLine("File downloaded: " + result.IsCompleted.ToString()); if (ftp != null) ftp.Close(); ftp = null; }
很簡單,按文件起來,走出當前處理的文件列表,等待,檢查每隔一段時間和當一個新文件出現時,下載它。
之前,我在加的AsyncCallback,過程工作得很好,除了用戶,直到返回的頁面無法做任何事情,我無法顯示任何進度指示器等中的AsyncCallback加入突然後UPLOAD的一部分是垃圾郵件的遠程端,我設法使他們(或至少我們的特定連接)崩潰。
它的任何想法,將不勝感激...... needly說我有點需要得到權利過程中固定的,因爲我們的交易員會有點不高興,當他們不能工作,彭博變得有點煩躁的時候,他們必須花3小時以上,試圖解決它:(
感謝!
現在我在一個空白頁測試它,我只是用在Page_Load處理程序來啓動它,沒有什麼刷新。也許我會把它從那裏拿走,然後把它從別的地方踢出去,只是爲了排除它。謝謝。 – 2009-04-09 19:54:56