【发布时间】:2011-02-24 19:45:03
【问题描述】:
我有一个 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());
}
}
}
现在我想从我的 MainPage.xaml 中获取编码字符串,例如:
TransactionService ts = new TransactionService();
ts.GetEncryptedString(url);
Console.WriteLine(ts.encodedString);
我不明白为什么 ts.encodedString 是空的。当我进行调试时,我看到它实际上打印出空,然后它进入 void dataSvc_GetEncryptedStringCompleted 以获取结果并填充它。
你能指出我做错了什么吗?有没有办法等待编码字符串被提取,然后才继续?
非常感谢。
【问题讨论】:
标签: asp.net silverlight web-services