1

私はしばらくの間、オンとオフの小さなプロジェクトに取り組んできました。私は近いと思いますが、「問題」があります。アイデアは、ファイルをサード パーティに 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時間以上費やさなければならないときに少し動揺するため、プロセスを正しく修正する必要があると言う必要があります.それを解決しようとしています:(

ありがとう!

4

1 に答える 1

1

私はあなたのコードの一番上のチャンクがPage_Loadハンドラーにあると思いますか?そしてライン

 ftp.Upload(fn);

問題を引き起こしていますか?もしそうなら、あなたのユーザーはページをリロードしていたと思うので、これは以前よりずっと頻繁に呼び出されています。

あなたは非同期パターンを見るのに正しい方向に進んでいますが、人々がページを更新しすぎた場合に注意する必要があるように思えます。

于 2009-04-09T18:43:20.207 に答える