У меня есть проект Silverlight, который получает некоторую зашифрованную строку через ссылку на службу: DataService (служба, которая выполняется в проекте ASP.NET).
Метод из TransactionServices.cs для получения зашифрованной строки::
public void GetEncryptedString(string original)
{
DataService.DataServiceClient dataSvc = WebServiceHelper.Create();
dataSvc.GetEncryptedStringCompleted += new EventHandler<SpendAnalyzer.DataService.GetEncryptedStringCompletedEventArgs>(dataSvc_GetEncryptedStringCompleted);
dataSvc.GetEncryptedStringAsync(original);
}
По завершении поместите результат в encodedString var (который инициализируется пустым значением):
void dataSvc_GetEncryptedStringCompleted(object sender, SpendAnalyzer.DataService.GetEncryptedStringCompletedEventArgs e)
{
if (e.Error == null)
{
try
{
if (e.Result == null) return;
this.encodedString = e.Result;
}
catch (Exception ex)
{
Logger.Error("TransactionService.cs: dataSvc_GetEncryptedStringCompleted: {0} - {1}",
ex.Message, ex.StackTrace);
MessageBox.Show(ex.ToString());
}
}
}
Теперь я хочу получить закодированную строку из моей главной страницы.xaml вроде:
TransactionService ts = new TransactionService();
ts.GetEncryptedString(url);
Console.WriteLine(ts.encodedString);
Я не понимаю, почему ts.encodedString пуст.Когда я делаю отладку, я вижу, что он на самом деле печатает пустой и ПОСЛЕ того, что он идет в void dataSvc_GetEncryptedStringCompleted, чтобы взять результат и заполнить его.
Можете ли вы указать мне, что я сделал не так?Есть ли способ дождаться извлечения encodedString и только после этого продолжить?
Большое спасибо.