0

これは私のコードです:

string my_dir = "";
try
{
    my_dir = ftp.GetCurrentDirectory() + "/test";
    //It sometimes crashes here. I get timeout error.
}
catch
{
    ftp.Close();
    ftp.Open();
    my_dir = ftp.GetCurrentDirectory() + "/test";
}

ftp は FtpConnection クラスのインスタンスです: http://ftplib.codeplex.com/discussions?searchText=&size=10&page=1

このエラーは、非常に大きなファイルで発生します。再入荷まで2時間ほどお待ちいただきます。それが私がここで尋ねている理由です。catch ブロックのコードは意味がありますか? タイムアウトの問題は修正されますか?

4

1 に答える 1

1

ライブラリがTimeoutプロパティを公開していない場合、できることはあまりありません。FtpConnectionはWinINETの非常に薄いラッパーであるため、唯一のオプションは、P/Invokeコードを記述してWinINETのタイムアウトを変更することです。

このクラスを使用する理由はありますか?.NETにはすでにFtpWebRequest/FtpWebResponseクラスがあります。FtpWebRequest.Timeoutプロパティを使用して操作のタイムアウトを変更するか、 Infinite値(-1)を渡すことでタイムアウトを無効にすることができます。

于 2013-03-14T12:01:15.533 に答える