gpt4 book ai didi

.net - 如何正确处理一次性任务结果?

转载 作者:行者123 更新时间:2023-12-02 04:56:47 25 4
gpt4 key购买 nike

我有一个场景,其中 Task1 初始化并返回一个 IDisposable 对象,以便在链式 Task2 中使用,如下所示:

Task.Factory.StartNew<Stream>(() =>
{
// open and write stream
})
.ContinueWith(prevTask =>
{
var stream = prevTask.Result; // possible AggregateException
// read stream and close it
});

问题是:如何正确处置对象?一个有趣的案例可能是这样的:Task1 打开+读取流,然后发生异常,该异常在 Task2 中重新抛出,因此 Task2 将看不到仍然打开的原始流。

是否有一些众所周知的模式,例如 using () { ... } 来做到这一点?

最佳答案

如评论中所述,您正在寻找的模式是使用 await 关键字调用的。异常被重新抛出的原因是因为您正在访问 prevTask.Result。如果您首先调用 prevTask.IsFaulted,那么您将能够在不重新抛出异常的情况下使用react。

关于.net - 如何正确处理一次性任务结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21114927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com