Task/thread horror! #12
Description
In OnBackgroundActivated, when this.connection.RequestReceived += OnAppServiceRequestReceived;
is run, I would think it's attaching waiting for a message, but it seems to run straight away, seeming synchronous unless await Task.Yield()
is added to OnAppServiceRequestReceived
. Even so, the configuration is incomplete for several lines where it could potentially? be used while incomplete.
In my experiance so far it means that I get an int parse exception parsing an empty string not having an AppService name in OnAppServiceRequestReceived
this.currentConnectionIndex = Int32.Parse(sender.AppServiceName);
If a re arrange the OnBackgroundActivated code like this, then I get the FullTrustProcessLauncher which does seem to go async, so it still hasn't had a chance to run when OnAppServiceRequestReceived restarts and so the desktopBridgeConnections is incomplete.
this.connection = appService.AppServiceConnection;
lock (thisLock)
{
this.connection.AppServiceName = connectionIndex.ToString();
connections.Add(connectionIndex, this.connection);
appServiceDeferrals.Add(connectionIndex, this.appServiceDeferral);
connectionIndex++;
}
this.connection.RequestReceived += OnAppServiceRequestReceived;
this.connection.ServiceClosed += AppServiceConnection_ServiceClosed;