为了账号安全,请及时绑定邮箱和手机立即绑定

在处理 WinSCPnet.dll FileTransferProgress 时

在处理 WinSCPnet.dll FileTransferProgress 时

C#
慕桂英4014372 2021-11-21 10:44:51
我在 SSIS (2008) 包中有一个脚本任务,可将文件从远程 FTP 服务器下载到本地目录。脚本任务是用 C# 2008 编写的,并使用 WinSCPnet.dll。使用 WinSCP 文档中的示例,我想出了下面的脚本。该脚本可以正常运行以下载文件,但所有文件成功/失败消息都会保留,直到整个脚本完成,然后所有消息都将立即转储。使用文件进度根本不显示Console.Write(),并试图利用Dts.Events.FireInformation()在SessionFileTransferProgress给我Error: "An object reference is required for the non-static field, method, or property Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase.Dts.get"有没有一种方法可以使用 DTS.events.Fire* 事件来显示文件进度信息,以及每个文件后的文件完成状态?
查看完整描述

1 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

我想出的答案很简单。我SessionFileTransferProgress从private static void改为private void。一旦这个方法不再是静态的,我就可以this用来调用这些Dts.Events.Fire*方法。SessionFileTransferProgress改为:


private void SessionFileTransferProgress(object sender, FileTransferProgressEventArgs e)

{

    bool fireAgain = false;


    this.Dts.Events.FireInformation(0, null,

                    string.Format("\r{0} ({1:P0})", e.FileName, e.FileProgress),

                    null, 0, ref fireAgain);


    // Remember a name of the last file reported

    _lastFileName = e.FileName;

}


查看完整回答
反对 回复 2021-11-21
  • 1 回答
  • 0 关注
  • 340 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信