Ich habe an einem kleinen Projekt an und ab für eine Weile gearbeitet und ich denke, ich bin in der Nähe, aber es hat "Probleme". Die Idee besteht darin, eine Datei an eine dritte Partei zu übertragen, sie zu verarbeiten und 5-10 Minuten später eine Ergebnismenge zu generieren, die auf unserer Seite heruntergeladen und verarbeitet werden muss.AsyncCallback in .net Website weggelaufen
So ist der Code könnte ein wenig einfach sein, es ist nur etwas, das ich zusammen
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; }
Ziemlich einfach gepflastert, drücken Sie die Datei auf, um eine Liste der aktuell bearbeiteten Dateien erhalten, warten und jeden überprüfen, so oft und Wenn eine neue Datei angezeigt wird, laden Sie sie herunter.
Bevor ich den AsyncCallback einfügte, funktionierte der Prozess gut, außer dass der Benutzer nichts tun konnte, bis die Seite zurückgegeben wurde und ich keine Fortschrittsanzeige usw. anzeigen konnte. Nach dem Hinzufügen des AsyncCallbacks der UPLOAD-Teil spammt das entfernte Ende und ich schaffte es, sie (oder zumindest unsere spezielle Verbindung) zum Absturz zu bringen.
Irgendwelche Gedanken dazu würden geschätzt werden ... needly zu sagen, dass ich irgendwie den Prozess richtig beheben muss, weil unsere Händler ein wenig verärgert werden, wenn sie nicht arbeiten können, und Bloomberg bekommt ein wenig verärgert, wenn sie müssen verbringen Stunden 3+ versuchen, es zu lösen :(
dank!
Ich teste es gerade in einer leeren Seite, ich benutze nur den Page_Load-Handler, um es zu starten, gibt es nichts zu aktualisieren. Vielleicht nehme ich es raus und kicke es irgendwo anders hin, nur um es auszuschließen. Vielen Dank. –
Wenn Sie das Problem mit einem wirklich einfachen Beispiel reproduzieren können, könnte es sich lohnen, das Codebeispiel zu bearbeiten. –