C# Threading/Async: Running a task in the background while UI is interactable

You’ve definitely implemented it incorrectly. You’re returning a Task<int>, but only once all the work has already been done.

It seems to me that you should probably just have a synchronous method:

private static void MyFunction()
    // Loop in here

Then start a task for it like this:

Task task = Task.Run((Action) MyFunction);

You can then await that task if you want – although in the example you’ve given, there’s no point in doing so, as you’re not doing anything after the await anyway.

I’d also agree with Reed that using a CancellationToken would be cleaner than a static flag somewhere else.

Leave a Comment