【问题标题】:AsyncCallback in .net web page run away.net 网页中的 AsyncCallback 跑掉了
【发布时间】:2010-10-18 13:32:21
【问题描述】:

我一直在断断续续地从事一个小项目,我想我已经接近了,但它有“问题”。我们的想法是将文件通过 FTP 传输给第三方,他们对其进行处理,并在 5-10 分钟后生成一个结果集,需要在我们这边下载和处理。

所以代码可能有点简单,只是我拼凑起来的东西

如果(!Page.IsPostBack) { 字符串 baseLocation = "C:\\temp\\"; 字符串 fn = baseLocation +“fxxxupld.inc”; ftp = new FtpClient(FTPServer, FTPUserName, FTPPassword); ftp.登录(); ftp.上传(fn); AsyncCallback 回调 = new AsyncCallback(CloseConnection); ftp.ChangeDir("结果"); 字符串[] 文件 = ftp.GetBloombergUploadList(); int CHigh = Files.GetUpperBound(0); 字符串最新文件 = CheckForNewFile(CHigh, ftp); ftp.BeginDownload(LatestFile, "c:\\temp\\Results.txt", 回调); } 私有静态字符串 CheckForNewFile(int CHigh,FtpClient ftp) { int NHigh = 0; 字符串最新文件 = ""; 而(CHigh >= NHigh) { 字符串[] 文件 = ftp.GetBloombergUploadList(); NHigh = Files.GetUpperBound(0); 最新文件 = 文件[NHigh-1].ToString(); 线程.睡眠(3000); } 返回最新文件; } 私人无效关闭连接(IAsyncResult 结果) { Debug.WriteLine("文件下载:" + result.IsCompleted.ToString()); if (ftp != null) ftp.Close(); ftp =空; }

很简单,将文件向上推,获取当前处理的文件列表,等待并经常检查,当出现新文件时,下载它。

在我添加 AsyncCallback 之前,该过程运行良好,除了用户在页面返回之前无法执行任何操作,并且我无法显示任何类型的进度指示器等。在添加 AsyncCallback 之后突然UPLOAD 部分正在向远程端发送垃圾邮件,我设法使它们崩溃(或至少我们的特定连接)。

对此的任何想法将不胜感激...需要说我有点需要纠正流程,因为我们的交易员在无法工作时会有些不安,而彭博社在不得不花钱时会有些不安3个多小时试图解决它:(

谢谢!

【问题讨论】:

    标签: asp.net ftp asynccallback


    【解决方案1】:

    我猜你的最上面的代码块在Page_Load 处理程序中?还有那一行

     ftp.Upload(fn);
    

    是造成问题的原因吗?如果是这样,我会说您的用户正在重新加载页面,所以这比以前更频繁地调用。

    您在查看异步模式方面是正确的,但听起来您需要提防人们过度刷新页面的情况。

    【讨论】:

    • 现在我在一个空白页面中测试它,我只是使用 Page_Load 处理程序来启动它,没有什么可以刷新的。也许我会把它从那里拿出来,然后把它踢到别的地方,只是为了排除它。谢谢。
    • 如果您可以通过一个非常简单的示例重现该问题,则可能值得编辑您的代码示例。
    猜你喜欢
    • 2012-03-01
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多