Vla*_*lad 8 c# asynchronous task-parallel-library async-await
这是一个非常简单的示例,我希望可以使用,但是...
    static AsyncLocal<bool> _value = new AsyncLocal<bool>();
    static void Main(string[] args)
    {
        A().Wait();
    }
    static async Task A()
    {
        await B();
        await C();
    }
    static async Task B()
    {
        _value.Value = true;
    }
    static async Task C()
    {
        if (!_value.Value) throw new Exception();
    }
那么是否有可能以某种方式在方法B中存储一些东西,以便值在 中可用C?我只需要通过异步流传递它(不要ThreadStatic)。
所以这就是我发现的:
AsyncLocal 仅以一种方式传输 - 从外层到内层异步方法,所以我添加了一个 B_Start在“顶级”级别初始化本地方法。工作代码:
    class Container<T>
    {
        public T Value { get; set; }
    }
    static AsyncLocal<Container<bool>> _value = new AsyncLocal<Container<bool>>();
    static void Main(string[] args)
    {
        A().Wait();
    }
    static async Task A()
    {
        await B_Start();
        await C();
    }
    static Task B_Start()
    {
        _value.Value = new Container<bool>();
        return B();
    }
    static async Task B()
    {
        _value.Value.Value = true;
    }
    static async Task C()
    {
        if (!_value.Value.Value) throw new Exception();
    }
| 归档时间: | 
 | 
| 查看次数: | 2580 次 | 
| 最近记录: |