C#.NET
public void ReadMail(TKMP.Net.PopClient pop)
{
foreach(TKMP.Net.MailData MailData in pop.MailDatas)
{
MailData.BodyLoaded +=new EventHandler(MailData_BodyLoaded);
MailData.ReadBodyAnsync();
}
}
private void MailData_BodyLoaded(object sender, EventArgs e)
{
TKMP.Net.MailData MailData = (TKMP.Net.MailData)sender;
TKMP.Reader.MailReader reader = new TKMP.Reader.MailReader(MailData.DataStream , true);
System.Diagnostics.Debug.WriteLine("メールを受信しました[" + reader.HeaderCollection["Subject"] + "]");
MailData.BodyLoaded -=new EventHandler(MailData_BodyLoaded);
}
VB.NET
Public Sub ReadMail(ByVal pop As TKMP.Net.PopClient)
Dim MailData As TKMP.Net.MailData
For Each MailData In pop.MailDatas
AddHandler MailData.BodyLoaded, AddressOf MailData_BodyLoaded
MailData.ReadBodyAnsync()
Next MailData
End Sub
Private Sub MailData_BodyLoaded(ByVal sender As Object, ByVal e As EventArgs)
Dim MailData As TKMP.Net.MailData = CType(sender, TKMP.Net.MailData)
Dim reader As New TKMP.Reader.MailReader(MailData.DataStream, True)
System.Diagnostics.Debug.WriteLine(("メールを受信しました[" + reader.HeaderCollection("Subject") + "]"))
RemoveHandler MailData.BodyLoaded, AddressOf MailData_BodyLoaded
End Sub
VB.NETのコードはC#.NETを元に「
C#.NET to VB.NET Translator」によって作成したものです
非同期でのサーバーとの通信処理はすべてキューとして扱われるため、 前の処理が終了する前に次の要求を発行すると、要求順に順次処理が行われます。 ただし、同期処理での要求は、処理キューと関係なく最優先で実行されます。
次のサンプルではサーバーへ接続済みのTKMP.Net.PopClientクラスからすべてのメールを非同期で受信します。 ReadMailメソッドへTKMP.Net.PopClientクラスを引数として渡すと、メソッドの処理が直ぐに終了し、 その後、デバッグウィンドウに受信したメールの件名が表示されます。