Files
Common-VS2019/docs/topics.md
T

3.0 KiB

Topic Tracker

Last updated: 2026-09-10

Prioritised Topics to Be Actioned

Priority Topic Date noted Next step Notes
P1 Prevent synchronous and asynchronous execution from overlapping in SaProcess_Base 2026-09-09 Route RunProcess() and RunAsync() through one guarded start operation and extend the lifecycle tests. A synchronous call can currently reuse and dispose the asynchronous worker's task data.
P2 Retain cancellation as a completed process outcome 2026-09-09 Store a durable cancellation result until the next process reset and test post-completion state. IsInterrupted currently loses token-based cancellation after task-data cleanup.
P2 Handle OperationCanceledException as cancellation 2026-09-09 Catch cancellation separately in RunProcess() and avoid recording it as an error. The general exception handler currently consumes cancellation before RunAsync() can distinguish it.
P2 Observe background RunAsync() tasks in consumers 2026-09-09 Review downstream fire-and-forget call sites and give their process consoles ownership of the returned task. Rebuilt consumers are binary-compatible, but some source call sites still discard the task.
P3 Define disposal and cross-thread status semantics 2026-09-09 Decide whether to add asynchronous disposal and a synchronized process-status snapshot. Disposal currently requests cancellation without awaiting termination; several status properties are read across threads.

Project-Specific Trackers

  • SacsMobileMaui tracks the MAUI framework upgrade, UI-thread helpers, native handlers, controls, and resources.

In-Progress Topics

Priority Topic Date noted Date started Next step Notes
P1 Review and harden SaProcess_Base lifecycle and cancellation 2026-09-08 2026-09-08 Address the prioritised Process Base findings above, beginning with prevention of mixed synchronous/asynchronous execution. Task ownership, timeout retention, cancellation lock ordering, documentation, and initial lifecycle tests are complete. Cooperative polling in individual derived processes will be handled separately.

Completed Topics

Topic Date noted Date started Date completed Outcome
Make asynchronous Process Base execution awaitable and retain state after a stop timeout 2026-09-08 2026-09-08 2026-09-08 RunAsync() returns Task; StopProcessAsync() reports success and leaves active state owned by a worker that has not stopped.
Remove cancellation callbacks from the Process Base lifecycle lock 2026-09-08 2026-09-08 2026-09-08 Cancellation and task-data disposal use separate synchronization; worker cleanup detaches state before disposal.
Add Process Base lifecycle tests 2026-09-08 2026-09-08 2026-09-08 Five focused MSTest cases cover completion, duplicate starts, stop timeout retention, cooperative cancellation, and cancellation callback lock behavior.