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
C#.NET ProgrammingMicrosoft Development

Avatar of undefined
Last Comment
thready

8/22/2022 - Mon
Mike Tomlinson

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

ASKER
Just pure C# logic.  This is for a portable class library I'm writing for Xamarin that is platform/API unaware.  Thanks!
David Johnson, CD

use a try/catch if out of scope then gracefully exit
I started with Experts Exchange in 2004 and it's been a mainstay of my professional computing life since. It helped me launch a career as a programmer / Oracle data analyst
William Peck
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
David Johnson, CD

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
Mike Tomlinson

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
⚡ FREE TRIAL OFFER
Try out a week of full access for free.
Find out why thousands trust the EE community with their toughest problems.
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
Mike Tomlinson

THIS SOLUTION ONLY AVAILABLE TO MEMBERS.
View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
See Pricing Options
Start Free Trial
GET A PERSONALIZED SOLUTION
Ask your own question & get feedback from real experts
Find out why thousands trust the EE community with their toughest problems.
thready

ASKER
Sweet!