信息
您所需的主题如下所示。但此主题未包含在此库中。

AsyncCompletedEventArgs 类

注意:此类在 .NET Framework 2.0 版中是新增的。

MethodNameCompleted 事件提供数据。

命名空间:System.ComponentModel
程序集:System(在 system.dll 中)

public class AsyncCompletedEventArgs : EventArgs
public class AsyncCompletedEventArgs extends EventArgs
public class AsyncCompletedEventArgs extends EventArgs

如果使用的是实现 基于事件的异步模式概述 的类,则该类将提供 MethodNameCompleted 事件。如果将 System.ComponentModel.AsyncCompletedEventHandler 委托的实例添加到事件中,将会在相应的事件处理程序方法的 AsyncCompletedEventArgs 参数中收到有关异步操作结果的信息。

客户端应用程序的事件处理程序委托可以检查 Cancelled 属性,以确定是否取消了异步任务。

客户端应用程序的事件处理程序委托可以检查 Error 属性,以确定执行异步任务的过程中是否出现异常。

如果该类支持多个异步方法或对同一异步方法的多次调用,则可以通过检查 UserState 属性的值确定哪个任务引发了 MethodNameCompleted 事件。当标记(称为任务 ID)对应的异步任务开始和完成时,您的代码需要跟踪这些标记。

Note注意

应用于此类的 HostProtectionAttribute 属性 (Attribute) 的 Resources 属性 (Property) 值如下:SharedStateHostProtectionAttribute 不影响桌面应用程序(桌面应用程序一般通过双击图标,键入命令或在浏览器中输入 URL 启动)。有关更多信息,请参见 HostProtectionAttribute 类或 SQL Server 编程和宿主保护属性

给继承者的说明 遵循基于事件异步模式的类可以引发事件以向客户端报告挂起异步操作的状态。如果该类提供 MethodNameCompleted 事件,则可以使用 AsyncCompletedEventArgs 向客户端通知异步操作的结果。 您要向客户端通知的有关异步操作结果的信息可能超出 AsyncCompletedEventArgs 所能容纳的限度。在此情况下,您可以从 AsyncCompletedEventArgs 类中派生自己的类,并提供附加的私有实例变量和对应的只读公共属性。如果操作被取消或发生错误,则在返回属性值之前调用 RaiseExceptionIfNecessary 方法。

下面的代码示例演示如何使用 AsyncOperation 来跟踪异步操作的生存期。此代码示例摘自一个为 System.ComponentModel.AsyncOperationManager 类提供的更大的示例。

using System;
using System.Collections;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Globalization;
using System.Threading;
using System.Windows.Forms;
...        // This event handler updates the ListView control when the
        // PrimeNumberCalculator raises the CalculatePrimeCompleted
        // event. The ListView item is updated with the appropriate
        // outcome of the calculation: Canceled, Error, or result.
        private void primeNumberCalculator1_CalculatePrimeCompleted(
            object sender, 
            CalculatePrimeCompletedEventArgs e)
        {
            Guid taskId = (Guid)e.UserState;

            if (e.Cancelled)
            {   
                string result = "Canceled";

                ListViewItem lvi = UpdateListViewItem(taskId, result);

                if (lvi != null)
                {
                    lvi.BackColor = Color.Pink;
                    lvi.Tag = null;
                }
            }
            else if (e.Error != null)
            {
                string result = "Error";

                ListViewItem lvi = UpdateListViewItem(taskId, result);

                if (lvi != null)
                {
                    lvi.BackColor = Color.Red;
                    lvi.ForeColor = Color.White;
                    lvi.Tag = null;
                }
            }
            else
            {   
                bool result = e.IsPrime;

                ListViewItem lvi = UpdateListViewItem(
                    taskId, 
                    result, 
                    e.FirstDivisor);

                if (lvi != null)
                {
                    lvi.BackColor = Color.LightGray;
                    lvi.Tag = null;
                }
            }
        }

import System.*;
import System.Collections.*;
import System.Collections.Specialized.*;
import System.ComponentModel.*;
import System.Data.*;
import System.Drawing.*;
import System.Threading.*;
import System.Windows.Forms.*;

...    private void primeNumberCalculator1_CalculatePrimeCompleted(Object sender,
        CalculatePrimeCompletedEventArgs e)
    {
        Guid guid = (Guid)e.get_UserState();
        if (e.get_Cancelled()) {
            String result = "Cancelled";
            ListViewItem lvi = UpdateListViewItem((Guid)e.get_UserState(),
                result);
            if (lvi != null) {
                lvi.set_BackColor(Color.get_Pink());
                lvi.set_Tag(null);
            }
        }
        else {
            if (e.get_Error() != null) {
                String result = "Error";
                ListViewItem lvi = UpdateListViewItem((Guid)e.get_UserState(),
                    result);
                if (lvi != null) {
                    lvi.set_BackColor(Color.get_Red());
                    lvi.set_ForeColor(Color.get_White());
                    lvi.set_Tag(null);
                }
            }
            else {
                boolean result = e.get_IsPrime();
                ListViewItem lvi = UpdateListViewItem((Guid)e.get_UserState(),
                    result, e.get_FirstDivisor());
                if (lvi != null) {
                    lvi.set_BackColor(Color.get_LightGray());
                    lvi.set_Tag(null);
                }
            }
        }
    } //primeNumberCalculator1_CalculatePrimeCompleted

System.Object
   System.EventArgs
    System.ComponentModel.AsyncCompletedEventArgs
       派生类

此类型的任何公共静态(Visual Basic 中的 Shared)成员都是线程安全的,但不保证所有实例成员都是线程安全的。

Windows 98、Windows 2000 SP4、Windows Millennium Edition、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

.NET Framework

受以下版本支持:2.0

社区附加资源

显示:
© 2014 Microsoft