> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 设置调用方法示例

> 设置调用方法示例

本主题提供了一个如何为自定义提供程序设置调用方法的示例。在使用自定义异步提供程序时，最好使用调用方法，以便提供程序可以按需重用。

```c++ theme={null}
HRESULT CustomProviderMethodAsync(XAsyncBlock* async)
{
    // Set up the context for your method.
    void* context;
    HRESULT hr = XAsyncBegin(async, context, CustomProviderMethodAsync, __FUNCTION__,
        [](XAsyncOp op, const XAsyncProviderData* providerData)
        {
            // Provider cases are handled here.
            return S_OK;
        });
    return hr;
}
```

此示例展示了所有异步 Microsoft Game Development Kit (GDK) 方法的实现方式，允许提供程序的重用。如果 `DoWork` 分支非常具体，它就会成为一个专用的异步函数。要使其通用化，可以让 `DoWork` 分支以某种方式可自定义。

## 参考 API 文档

* [XAsyncProvider (API 内容)](/reference/system/xasyncprovider/xasyncprovider_members)

## 另请参阅

[XAsyncProvider 库概述](/build/core-features/common/async/async-libraries/async-library-xasyncprovider)

[设置自定义提供程序（示例）](/build/core-features/common/async/async-libraries/async-library-xasyncprovider-example-setup-custom-provider)

[设置返回数据（示例）](/build/core-features/common/async/async-libraries/async-library-xasyncprovider-example-setup-return-data)

[设置可取消性（示例）](/build/core-features/common/async/async-libraries/async-library-xasyncprovider-example-setup-cancelability)

[XAsyncProvider](/reference/system/xasyncprovider/xasyncprovider_members)


## Related topics

- [用于异步任务编程的 XAsync 库](/zh-CN/build/core-features/common/async/async-libraries/index.md)
- [设置可取消性示例](/zh-CN/build/core-features/common/async/async-libraries/async-library-xasyncprovider-example-setup-cancelability.md)
- [设置返回数据示例](/zh-CN/build/core-features/common/async/async-libraries/async-library-xasyncprovider-example-setup-return-data.md)
- [XAsyncProvider 库概述](/zh-CN/build/core-features/common/async/async-libraries/async-library-xasyncprovider.md)
- [IXtfConsoleControlClient](/zh-CN/reference/tools/xtf/xtfconsolecontrol/interfaces/IXtfConsoleControlClient/ixtfconsolecontrolclient.md)
