Remember to do that on the app.Invoke(), where app is your Eto.Forms.Application instance.
In an F#/Eto app I have lines like these:
[<EntryPoint>]
[<STAThread>]
let main _ =
Eto.Platform.Initialize(Eto.Platforms.Wpf)
let app = new Application()
let appinv (f) =
app.Invoke(fun _ -> f()) |> ignore
/// In some code later on, triggered on clicking
/// the button processclick.
appinv (fun () ->
processclick.Enabled <- false
cleanclick.Enabled <- false
cancelclick.Enabled <- true
)