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
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
WinForms, WPF, WebForms?...something else?
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
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
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
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
https://msdn.microsoft.com/en-us/library/ms173171.aspx
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
}
Something like this
B(A(str) { print(str); } );
Void B(func f){
//do some work
f("hello"): // prints hello
}
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Sweet!