Basically, the application was supposed to fetch configuration data from my server and use it. I added a reference to my server side service, and of course, Visual Studio generated an asynchronous proxy for me.
For a reason that is irrelevant for this post, I decided to wrap the asynchronous server call with a synchronous helper class. My helper class exposed a synchronous method which his parameters are the same as the server method except for the callback parameter that is not needed.
“One code of block worth a thousand words”, that’s the saying, right? :)
Let’s have a look at my helper class:
class SynchronousConfigReader
{
private AutoResetEvent m_callbackCompleted;
private string m_configValue;
public SynchronousConfigReader()
{
m_callbackCompleted = new AutoResetEvent(false);
}
public string GetConfigData(string configKey)
{
ConfigServiceProxy proxy = new ConfigServiceProxy();
proxy.GetConfigData(configKey, GetConfigData_Completed);
m_callbackCompleted.WaitOne();
return m_configValue;
}
private void GetConfigData_Completed(object sender, GetConfigDataEventArgs e)
{
m_configValue = e.ConfigValue;
m_callbackCompleted.Set();
}
}
Read more: Shimi Rokah
QR: