Dart.Mail 名前空間 > Pop クラス : Progress イベント |
<CategoryAttribute("Progress")> <DescriptionAttribute("Raised repeatedly while a message is being retrieved.")> Public Event Progress As EventHandler(Of PopProgressEventArgs)
[Category("Progress")] [Description("Raised repeatedly while a message is being retrieved.")] public event EventHandler<PopProgressEventArgs> Progress
イベント ハンドラが、このイベントに関連するデータを含む、PopProgressEventArgs 型の引数を受け取りました。次の PopProgressEventArgs プロパティには、このイベントの固有の情報が記載されます。
プロパティ | 解説 |
---|---|
Final Dart.Mail.ProgressEventArgsから継承されます。 | これが特定のメッセージに対して発生した最後のProgressイベントである場合、trueを返します。 |
Length Dart.Mail.ProgressEventArgsから継承されます。 | メッセージデータの長さ。 |
Message | 現在取得中のメッセージを表すPopMessageを取得します。 |
Position Dart.Mail.ProgressEventArgsから継承されます。 | メッセージデータ内の位置。 |
メッセージを取得するとき、各データバッファーが処理されるたびにProgressが発生します。このイベントによって提供されるPopProgressEventArgsには、進行状況をユーザーに表示するために役立つデータが含まれます。たとえば、全メッセージの取得の進行状況をProgressBarを使用して表示する場合は、System.Windows.Forms.ProgressBar.Minimumとして0、System.Windows.Forms.ProgressBar.Maximumとしてpop1.Messages.Length、System.Windows.Forms.ProgressBar.ValueとしてMessageBase.Idを、それぞれ使用します。各メッセージの進行状況を表示する場合は、System.Windows.Forms.ProgressBar.Minimumとして0、System.Windows.Forms.ProgressBar.MaximumとしてProgressEventArgs.Length、System.Windows.Forms.ProgressBar.ValueとしてProgressEventArgs.Positionを、それぞれ使用します。
ProgressEventArgs.LengthはMessageBase.Sizeを使用するので、有効な長さが必要な場合は、Authenticateの'getSizes'パラメーターをtrueにする必要があります。
このイベントをUIスレッドにマーシャリングできるようにするには、ComponentBase.SynchronizingObjectを設定します。
private void previewMessages(object sender) { // サーバーとアカウントの情報を設定します。 pop1.Session.RemoteEndPoint = new Dart.Mail.IPEndPoint(myServer, Pop.GetDefaultPort(pop1.Session)); pop1.Session.Username = myUsername; pop1.Session.Password = myPassword; // 接続してアカウントにログインします。 pop1.Connect(); pop1.Authenticate(true, true); // アカウントの各メッセージのヘッダフィールドを取得します。 foreach (PopMessage popMessage in pop1.Messages) popMessage.Get(0); // セッションから適切にログアウトします。 pop1.Close(); } private void pop1_Progress(object sender, PopProgressEventArgs e) { // メッセージヘッダの情報をリストビューに表示します。 if (e.Final) { string[] header = { e.Message.Message.From, e.Message.Message.Subject, e.Message.Message.Date.ToString() }; listView1.Items.Add(new ListViewItem(header)); } }
Private Sub previewMessages(ByVal sender As Object) ' サーバーとアカウントの情報を設定します。 pop1.Session.RemoteEndPoint = New Dart.Mail.IPEndPoint(myServer, Pop.GetDefaultPort(pop1.Session)) pop1.Session.Username = myUsername pop1.Session.Password = myPassword ' 接続してアカウントにログインします。 pop1.Connect() pop1.Authenticate(True, True) ' アカウントの各メッセージのヘッダフィールドを取得します。 For Each popMessage As PopMessage In pop1.Messages popMessage.Get(0) Next popMessage ' セッションから適切にログアウトします。 pop1.Close() End Sub Private Sub pop1_Progress(ByVal sender As Object, ByVal e As PopProgressEventArgs) Handles pop1.Progress ' メッセージヘッダの情報をリストビューに表示します。 If e.Final Then Dim header() As String = { e.Message.Message.From, e.Message.Message.Subject, e.Message.Message.Date.ToString() } listView1.Items.Add(New ListViewItem(header)) End If End Sub