I saw a post at the winfx.avalon newsgroup about the lack of support for a BackgroundWorker in Avalon (at least for v1.0). Since I need something like this for calling the Web Services asynchronously and then updating the Graphical User Interface, I just created a very simple one.
public class BackgroundWorker
{
private UIContext _context;
private UIContextOperationCallback _callback;
public BackgroundWorker(UIContextOperationCallback callback)
{
_context = UIContext.CurrentContext;
_callback = callback;
Thread thread = new Thread(new ThreadStart(_run));
thread.Start();
}
private void _run()
{
_context.Invoke(_callback, null);
}
}
For the benefit of those who haven’t done any Windows GUI programming before, I have to say that a pattern like this is necessary because all the GUI elements must be updated by the same thread. The above makes sure that this happens.
UPDATE: Formatting fixed.
As part of the BrainExpanded project, I’m building an iOS app that lets users easily…
Artificial Intelligence (AI) has rapidly evolved over the past few decades, becoming an integral part…
Happy New Year everyone! I was planning for my next BrainExpanded post to be a…
See "BrainExpanded - Introduction" for context on this post. Notes and links Over the years,…
This is the first post, in what I think is going to be a series,…
Back in February, I shared the results of some initial experimentation with a digital twin.…