Link to home
Start Free TrialLog in
Avatar of thready
thready

asked on

C# lightweight timer callback

Hi Experts,

In C#, is there a way to have a function called, without storing any kind of memory variable - just an async callback - or even a lambda function, that will call back in a supplied time in milliseconds.  A 2nd criteria is that the object it calls back may no longer exist.

I'm interested in this because I'd like to schedule animations to occur without knowing if the user will exit the app.  I want the callback to die gracefully and would love to know a way to write this code super-simply if possible.

Thank you very much,
Mike
Avatar of Mike Tomlinson
Mike Tomlinson
Flag of United States of America image

WinForms, WPF, WebForms?...something else?
Avatar of thready
thready

ASKER

Just pure C# logic.  This is for a portable class library I'm writing for Xamarin that is platform/API unaware.  Thanks!
use a try/catch if out of scope then gracefully exit
Avatar of thready

ASKER

Let me rephrase my question, now that I've got a better understanding of what I need at this point.

Can I write a function in C#, that will take some function with its input parameters as input?

Let's say I want to have some arbitrary functions like:
MyFunc(1, 2, "hello")
AnotherFunc(25.3, "have a good day", "here's another string", 22)

Can I pass this function off to a function that takes arbitrary functions that will get called later when some event occurs?

I'm not at all interested in events - just the syntax to call these functions later on....  
In javascript, this is super simple.  Not sure if this is possible in C#.

Thanks!
Mike
MyFunc(1, 2, "hello")
AnotherFunc(25.3, "have a good day", "here's another string", 22)


void Myfunc(int one,int two,string hello){
//todo: do something here
}
AnotherFunc(double dblone,string strGreeting,string strAnother, int param4)
{
//todo: do something here
}

Can I pass this function off to a function that takes arbitrary functions that will get called later when some event occurs? You would have to have the variables set as global otherwise they would be out of scope.  Global variables are highly frowned upon by the code nazis
You might be looking for Delegates...but we'd need more details about how you'd actually do this to be sure:
https://msdn.microsoft.com/en-us/library/ms173171.aspx
Avatar of thready

ASKER

I'm looking for what JavaScript has but in c#.  You can pass a function that exists nowhere else- as an argument to another function.

Something like this
B(A(str) { print(str); } );

Void B(func f){
   //do some work
  f("hello"):   // prints hello
}
ASKER CERTIFIED SOLUTION
Avatar of Mike Tomlinson
Mike Tomlinson
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of thready

ASKER

Sweet!