/* * Efl Core Event examples. * * This example shows the various ways of adding callbacks for standard events. * It also demonstrates how to freeze and thaw events on an object. */ using System; public class Example : Efl.Csharp.Application { // Polling callback private static void PollCb(object sender, EventArgs e) { Console.WriteLine(" Poll from {0}", ((Efl.Object)sender).GetName()); } protected override void OnInitialize(string[] args) { // Retrieve the application's main loop var mainloop = Efl.App.AppMain; mainloop.SetName("Mainloop"); // This event gets triggered continuously mainloop.PollHighEvt += PollCb; // This timer will control events fired by the main loop var timer = new Efl.LoopTimer(mainloop, 0.1); timer.SetName("Timer"); // To count number of timer triggers int tick_count = 0; timer.TimerTickEvt += (object sender, EventArgs e) => { string message = "Tick {0} from {1}: "; // Depending on the number of timer ticks, it does a different thing switch (tick_count) { case 0: message += "Freezing Mainloop events"; mainloop.FreezeEvent(); break; case 1: message += "Thawing Mainloop events"; mainloop.ThawEvent(); break; default: message += "Quitting"; mainloop.Quit(new Eina.Value(0)); break; } Console.WriteLine(message, tick_count, ((Efl.Object)sender).GetName()); tick_count++; }; Console.WriteLine("Waiting for Timer to call back..."); } protected override void OnTerminate() { Console.WriteLine("Application is over"); } #if WIN32 [STAThreadAttribute()] #endif public static void Main() { var example = new Example(); example.Launch(); } }