anchor.diff:          this.WebView.ScrollView.AddSubview refresh
           #endif
   
  -        Async.Start(Utility.Timer.ticker (fun _ -> this.InvokeOnMainThread(fun _->  
  +        Async.Start(Utility.Timer.ticker (fun _ -> 
               if events.Count > 0 then
                   let eventsBuilder = new System.Text.StringBuilder()
                   for (event, json) in events do
                       let json = String.Format( "[{0},{1},{2},{3},'{4}']",event.Sequence, event.EventType, event.Stamp, json, event.User)
                       eventsBuilder.AppendFormat ("wireclub.Channel.processChannelEvents('{0}', {1});", entity.Id, json) |> ignore
   
  -                this.WebView.EvaluateJavascript (eventsBuilder.ToString()) |> ignore
  +                this.InvokeOnMainThread(fun _-> this.WebView.EvaluateJavascript (eventsBuilder.ToString()) |> ignore)
                   events.Clear()
  -        )) 500)
  +
  +        ) 500, cancelPoll.Token)
  +
  +    override this.Dispose (bool) =
  +        cancelPoll.Cancel()
   
       member this.ProcessEvent(event:ChannelEvent) =
           match event.Event with
  
positive.code: 
      let memberTypes = [  MembershipTypePublic.Member; MembershipTypePublic.Moderator; MembershipTypePublic.Admin ]
  
      let cancelPoll = new Threading.CancellationTokenSource()
     
      let barButtons () =
          [|
              yield controller.MoreButton
  
negative.code:     inherit UIViewController ("GameViewController", null)
  
      let events = new List<ChannelEvent * string> ()
  
      let cancelPoll = new Threading.CancellationTokenSource()
  
      [<Outlet>]
      member val WebView: UIWebView = null with get, set
  