Propose improved terminology for Application.Run lifecycle APIs to reduce confusion.
Based on @tig's review:
Begin and End (not wordy like BeginSession/EndSession)RequestStop (non-blocking nature is clear)RunLoop (starts driver's mainloop) and RunIteration (one iteration)RunState Sounds Like State DataRunState rs = Application.Begin(window); // ❌ What state does it hold?
Reality: It's a token/handle for Begin/End pairing, not state data.
Solution: Rename to RunToken (clear it's a token, concise).
EndAfterFirstIteration Confuses End() Method with Loop ControlApplication.EndAfterFirstIteration = true; // ❌ Does this call End()?
Reality: It controls RunLoop() behavior, not lifecycle cleanup.
Solution: Rename to StopAfterFirstIteration (aligns with RequestStop, clearly about loop control).
| Current | Proposed | Why |
|---|---|---|
RunState |
RunToken |
Clear it's a token, not state |
EndAfterFirstIteration |
StopAfterFirstIteration |
Clear it controls loop, aligns with RequestStop |
| API | Why It Works |
|---|---|
Begin / End |
Clear, concise - not wordy |
RequestStop |
"Request" appropriately conveys non-blocking |
RunLoop / RunIteration |
Distinction is important: RunLoop starts mainloop, RunIteration processes one iteration |
RunState rs = Application.Begin(window);
Application.EndAfterFirstIteration = true;
Application.RunLoop(rs);
Application.End(rs);
RunToken token = Application.Begin(window);
Application.StopAfterFirstIteration = true;
Application.RunLoop(token);
Application.End(token);
Backward compatible via obsolete attributes:
[Obsolete("Use RunToken instead")]
public class RunState { ... }
[Obsolete("Use StopAfterFirstIteration instead")]
public static bool EndAfterFirstIteration { get; set; }
Users can migrate gradually with simple find/replace.
Status: Revised based on maintainer feedback Focus: Minimal, targeted changes addressing real confusion Impact: Low (2 names), High clarity gain