GrapeCity Secure FTP for .NET 4.0J
非同期処理を実装する
すべて展開すべて展開
すべて折りたたむすべて折りたたむ

ここでは、非同期処理を実装する手順について説明します。

旧バージョンとの違い

非同期処理を行う場合、旧バージョン(FTP for .NET 1.0J/Secure FTP 2.0J)では複雑なコード処理が必要でした。たとえば、サーバーから非同期でリストを取得する場合、同期処理の場合とは異なる専用のメソッド(Ftp.BeginListメソッド)を実行し、さらにリスト取得処理の終了時に発生する専用のイベント(Ftp.EndListイベント)に処理を実装する必要があり、その結果メンテナンスしにくいイベント駆動型のコードになっていました。

本バージョンでは、それらのメソッドやイベントに代わり、新たにStartメソッドMarshalメソッドが用意され、シンプルな実装で非同期処理が可能となりました。各メソッドの使用方法について、以下に説明します。

Startメソッド

本製品のメソッドは、同期処理と非同期処理(ブロッキング用途と非ブロッキング用途)の両方をサポートしています。ただし、メソッドを単純に実行した場合、それは同期処理で実行されます。

本バージョンで導入されたStartメソッドは、渡された関数を別のワーカースレッドで実行する機能です。つまり、本製品のメソッドが含まれる関数をStartメソッドに渡すだけで、その関数は呼び出し元のメインスレッドのUIをブロックすることなく、非同期処理で実行されます。このメソッドの構文は単純です。

続きを読む

Marshalメソッド

Startメソッドを使用して呼び出された関数は、別のワーカースレッドで実行されます。そこから呼び出し元のメインスレッド(UIスレッド)へ結果やデータを戻す(マーシャリングする)場合には、その関数内でMarshalメソッドを実行します。

Marshalメソッドを実行すると、メソッドの引数の種類により、メインスレッドでListingイベントなどのイベントが発生します。それらのイベントハンドラ内で、Marshalメソッドの引数として渡されたデータを受け取ることができます。

続きを読む

Startメソッドを使用せずに、同期処理として呼び出した関数内でMarshalメソッドが実行されても、動作上特に問題はありません。

StartメソッドとMarshalメソッドの実装例

StartメソッドとMarshalメソッドを使用して、非同期処理を実現する手順例を、以下に示します。

続きを読む

 

 


© 2002, GrapeCity inc. All rights reserved.