私は、社内で長い間使用されているカスタム フレームワークを使用しています。コード内で新しい非同期機能を使用したいと考えています。
これを行うには、「MyClass」の「ProcessRequestMessage」を非同期としてマークする必要があります。インターフェイス「IFramework」とクラス「FrameworkBase」を変更できません。
フレームワークは、「ProcessRequestMessage」が非同期的に終了することを既に想定しているため、メソッドの最後で「Wait()」を使用する必要はありません。「SetResponseCode」への呼び出しは、「MyClass」のインスタンスを終了するようにフレームワークに通知します
質問: 非同期機能のドキュメントを読みましたが、無効なイベントのみを非同期ワークフローへのエントリとして非同期としてマークする必要があります (タスクはここでは適用されません)。私のコードでは、void インターフェイス メソッドの実装をエントリ ポイントとしてマークする必要があります。
だから私はこれを行うことができます:
interface IFramework
{
void ProcessRequestMessage()
void SetResponseCode(int code)
}
public abstract class FrameworkBase: IFramework
{
abstract void ProcessRequestMessage()
public void SetResponseCode(int code)
{
//internal implementation
}
}
public class MyClass: FrameworkBase
{
protected override async void ProcessRequestMessage()
{
//await something
SetResponseCode(0);
}
}