anchor.diff:              | None -> () // ignore invalid swap order
   
           member this.Terminate () =
  -            match threadOpt with
  -            | Some thread ->
  +            match taskOpt with
  +            | Some task ->
                   match this.Started with false -> failwithumf () | true -> ()
                   lock terminatedLock (fun () ->
                       if terminated then raise (InvalidOperationException "Redundant Terminate calls.")
                       terminated <- true)
  -                thread.Join ()
  +                task.Wait ()
               | None -> raise (InvalidOperationException "Cannot terminate before starting.")
positive.code: /// A threaded 2d render process.
  type RenderThread2d (createRenderer2d) =
  
      let mutable threadOpt = None
      let startedLock = obj ()
      let mutable started = false
      let terminatedLock = obj ()
  
negative.code:             lock terminatedLock (fun () -> terminated)
  
          member this.Start () =
              let task = new Task ((fun () -> this.Run ()), TaskCreationOptions.LongRunning)
              taskOpt <- Some task
              task.Start ()
              while not this.Started do Thread.Yield () |> ignore<bool>
  
          member this.EnqueueMessage message =
  