猿问

在处理 WinSCPnet.dll FileTransferProgress 时

我在 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* 事件来显示文件进度信息,以及每个文件后的文件完成状态?


慕桂英4014372
浏览 341回答 1
1回答

料青山看我应如是

我想出的答案很简单。我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;}
随时随地看视频慕课网APP
我要回答