AsyncRelayCommand IsRunning only true on return of Task
还没有人认领这个 Issue。
评估
调研方向
首先定位 AsyncRelayCommand 的实现,并跟踪在调用异步委托前后 ExecutionTask 和 IsRunning 的赋值方式。使用 Execute 的同步部分重现该问题,然后验证命令状态是否在委托体运行之前更新,并在执行期间保持正确。
由索引模型根据 Issue 内容生成。
描述
Describe the bug
The ExecutionTask and IsRunning of the AsyncRelayCommand is only set after the execute returns a Task, so on the first real async function.
As long as it's running synchronously, the ExecutionTask is still the previous task and IsRunning is based on that one
Regression
No response
Steps to reproduce
- Create an AsyncRelayCommand with an async function that returns a Task
relayCommand = AsyncRelayCommand(Execute);
- Check if is IsRunning in the synchronous part of the execution method
async Task Execute()
{
Debug.Assert(relayCommand.IsRunnung); // Fails
Debug.Assert(relayCommand.AsyncRelayCommand == null); // at least not be the previous task?
await Task.Wait(1000);
}
Expected behavior
That AsyncRelayCommand is set to null and IsRunning is true before the execute method is called.
Screenshots
No response
IDE and version
VS 2022
IDE version
No response
Nuget packages
- CommunityToolkit.Common
- CommunityToolkit.Diagnostics
- CommunityToolkit.HighPerformance
- CommunityToolkit.Mvvm (aka MVVM Toolkit)
Nuget package version(s)
8.2.0
Additional context
Ideally, you'd not call the IsRunning inside the Execute call, but I've done it by accident already that I run setup that I wanted to skip when a command is running, that is called from the Execute function before any network calls.
Workaround is just doing
await Task.Yield();
as the first line in the Execute method.
Help us help you
Yes, I'd like to be assigned to work on this item
- 主要语言
- C#
- 星标
- 3.8k
- 派生
- 401
- PR 合并指标
- 30 天内没有已合并 PR
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
CommunityToolkit/dotnet 的其他 Issue
-
RelayCommand<T>.CanExecute(null) returns false for value types without a predicate可能已有人在做 @apachezy 于 86 天前认领。 未关闭bug :bug:
难度 2/5 1-3 小时 新手友好度 84/100
CommunityToolkit/dotnet#1206 ·
-
难度 2/5 1-3 小时 新手友好度 65/100
CommunityToolkit/dotnet#1186 ·
-
bug :bug:
难度 1/5 1 小时以内 新手友好度 68/100
CommunityToolkit/dotnet#648 ·
-
难度 5/5 一周以上 新手友好度 35/100
CommunityToolkit/dotnet#1217 ·
-
bug :bug:
难度 3/5 1-2 天 新手友好度 68/100
CommunityToolkit/dotnet#1215 ·
查看 CommunityToolkit/dotnet 的全部 Issue
相似的 Issue
-
[BUG] Still libmicrohttpd dependency is not removed properly from External-Dependency-Info.txt file未关闭type/bug
难度 1/5 1 小时以内 新手友好度 72/100
维护者通常 1 天内回复
-
[辞書] かんそうりつ->乾燥率未关闭辞書
难度 1/5 1 小时以内 新手友好度 62/100
维护者通常 1 天内回复
-
bug good first issue
难度 2/5 1-3 小时 新手友好度 76/100
thomhurst/TUnit#7201 · 1 条评论 ·
维护者通常 1 天内回复
-
难度 1/5 1 小时以内 新手友好度 88/100
ArduPilot/MissionPlanner#3826 ·
维护者通常 1 天内回复
-
MongoDB integration tests fail on newer GitHub Actions runner kernels可能已有人在做 @nmummau 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 74/100
Eventuous/eventuous#626 · 2 条评论 ·
维护者通常 7 天内回复