1

申し訳ありませんが、少し具体的な質問があります。はい、これはカスタム イベント ハンドラをイベントに設定することに関連しています。はい、この種の質問はすでに何度も出されているかもしれませんが、ここでは WinSCP の状況に限定する必要があります。

Session.SynchronizeDirectoriesメソッドの例を参照してください:
http://winscp.net/eng/docs/library_session_synchronizedirectories

C# の例を C++/CLI に変換していますが、問題が発生しました。

C# では、次のように設定するのは簡単です。

Session session = new Session();
session.FileTransferred += FileTransferred;
...
private static void FileTransferred(object sender, TransferEventArgs e)
{
    ....
}

C++/CLI では、次のことを行います。

WinSCP::Session ^ session = gcnew WinSCP::Session();
session->FileTransferred += gcnew EventHandler(FileTransferred);
...

static void FileTransferred(System::Object ^sender, WinSCP::TransferEventsArgs ^e)
{
    ....
}

しかし、私はこのエラーが発生します:

関数 FileTransferred() はデリゲート型 'void (System::Object ^, System::EventArgs ^)' と一致しません。

に変更してみるFileTransferred(System::Object ^sender, EventArgs ^e)が、 の全身FileTransferred()が無効になってしまう。

4

2 に答える 2

2
  session->FileTransferred += gcnew EventHandler(FileTransferred);

EventHandler のデリゲート タイプが正しくありません。代わりに、WinSCP FileTransferredEventHandler デリゲートを作成する必要があります。修理:

  session->FileTransferred += gcnew WinSCP::FileTransferredEventHandler(FileTransferred);

WinSCP::TransferEventsArgs のスペルも間違っていることに注意してください。

于 2014-04-15T11:58:04.160 に答える