C# の WebClient を介してアップロード プロセスを一時停止または再開する方法を探しています。
疑似コード:
WebClient Client = new WebClient(); Client.UploadFileAsync(new Uri("http://mysite.com/receiver.php"), "POST", "C:\MyFile.jpg");
多分何かのような..
Client.Pause();
何か案が?
WebClient
HttpWebRequest
この種の機能はありません-私の知る限り、わずかに低いレベルでさえありません。何が起こるかを正確に制御できる HTTP ライブラリを使用する必要があります(もちろん、より多くのコードが必要になることは間違いありません)。のポイントはWebClient
、非常に単純な状況で使用するための非常に単純な API を提供することです。
Jon Skeetが述べたように、これはHttpWebRequestクラスではなくWebclientでは使用できません。
ただし、サーバーを制御している場合は、サーバーがアップロードを受け取ります。おそらく、WebClientを使用してファイルの小さなチャンクをアップロードし、すべてが受信されたときにサーバーにチャンクをアセンブルさせることができます。そうすれば、一時停止/再開機能を作成するのがいくらか簡単になります。
サーバーを制御できない場合は、単なる制御を提供するAPIを使用する必要があります。その後、心配することが多くなります。それでも、一時停止が長すぎると、サーバーからタイムアウトが発生する場合があります。
わかりました。コード例を示すことなく、何ができるかを説明します。
アップロード用の WCF サービスを作成します。そのサービスはストリーミングを使用する必要があります。
覚えておくべきこと:
私は現在、まさにそのテーマについてブログ投稿を書いています。今週、それを機能させる方法のコード サンプルとともに投稿される予定です。
マイブログで確認できます
これにはコード サンプルが含まれていないことはわかっていますが、ブログにはいくつかのコード サンプルがありますが、全体として、これはサーバーへのファイル アップロードの停止と再開を行う 1 つの方法です。
このようなことを行うには、実際のhttppostを段階的に実行する独自のワーカースレッドを作成する必要があります。
を送信する前に、操作が一時停止されているかどうかを確認し、再開されるまでファイルコンテンツの送信を停止する必要があります。
ただし、サーバーによっては、接続が一定期間アクティブでないと接続を閉じることができ、これはほんの数秒である可能性があります。