私はしばらくの間、オンとオフの小さなプロジェクトに取り組んできました。私は近いと思いますが、「問題」があります。アイデアは、ファイルをサード パーティに FTP 送信し、サード パーティが処理し、5 ~ 10 分後に結果セットを生成することです。この結果セットをダウンロードして処理する必要があります。
コードは少し単純かもしれません。
if (!Page.IsPostBack) { string baseLocation = "C:\\temp\\"; 文字列 fn = baseLocation + "fxxxupld.inc"; ftp = 新しい FtpClient(FTPServer, FTPUserName, FTPPassword); ftp.ログイン(); ftp.Upload(fn); AsyncCallback コールバック = new AsyncCallback(CloseConnection); ftp.ChangeDir("結果"); 文字列[] ファイル = ftp.GetBloombergUploadList(); int CHigh = Files.GetUpperBound(0); String LatestFile = CheckForNewFile(CHigh, ftp); ftp.BeginDownload(LatestFile, "c:\\temp\\Results.txt", コールバック); } プライベート静的文字列 CheckForNewFile(int CHigh,FtpClient ftp) { int NHigh = 0; string LatestFile = ""; while (CHigh >= NHigh) { 文字列[] ファイル = ftp.GetBloombergUploadList(); NHigh = Files.GetUpperBound(0); LatestFile = Files[NHigh-1].ToString(); Thread.Sleep(3000); } LatestFile を返します。 } private void CloseConnection(IAsyncResult 結果) { Debug.WriteLine("ダウンロードしたファイル: " + result.IsCompleted.ToString()); if (ftp != null) ftp.Close(); ftp = ヌル; }
非常に簡単です。ファイルをプッシュアップし、現在処理されているファイルのリストを取得し、時々待ってチェックし、新しいファイルが表示されたらダウンロードします。
AsyncCallback を追加する前は、ページが返されるまでユーザーが何もできず、進行状況インジケーターなどを表示できなかったことを除いて、プロセスは正常に機能していました。AsyncCallback を追加した後、突然 UPLOAD 部分がリモートエンドをスパムし、なんとかそれらをクラッシュさせました(または少なくとも特定の接続)。
それについての考えをいただければ幸いです...トレーダーは仕事ができないと少し動揺し、ブルームバーグは3時間以上費やさなければならないときに少し動揺するため、プロセスを正しく修正する必要があると言う必要があります.それを解決しようとしています:(
ありがとう!