【发布时间】:2011-10-05 08:58:05
【问题描述】:
我是 Silverlight 和 WCF 的新手。我创建了一个简单的 Silverlight 应用程序,等待一秒钟后,我在其中显示带有来自列表对象集合的数据的警报消息框。
我使用 WCF 连接到数据库。但我首先将所有数据库数据添加到集合列表中,然后将该列表对象发送到 silverlight,silverlight 正在迭代。
在列表集合中插入数据时连接到数据库的 WCF 服务代码:
public List<int> GetData()
{
List<int> list = new List<int>();
using (SqlConnection connection = new SqlConnection())
{
connection.ConnectionString =
System.Configuration.ConfigurationManager.ConnectionStrings["sqlConnection"].ToString();
using (SqlCommand command = connection.CreateCommand())
{
command.CommandType = CommandType.Text;
command.CommandText = "Select * from insertItem";
connection.Open();
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
list.Add(reader.GetInt32(1));
}
}
}
}
return list;
}
Silverlight 代码用于从 WCF 服务访问列表类并在等待一秒钟后将其显示在消息框中:
Service1Client client = new Service1Client();
client.GetDataCompleted += new EventHandler<GetDataCompletedEventArgs>(DisplayResults);
client.GetDataAsync(1);
private void DisplayResults(object sender, GetDataCompletedEventArgs e)
{
timer.Stop();
ObservableCollection<int> list = e.Result;
foreach (int i in list)
{
HtmlPage.Window.Alert(i.ToString());
Thread.Sleep(1000);
}
}
谁能告诉我如何直接将数据从 WCF 服务显示到 silverlight,而无需等待首先将所有数据放入 List 类集合中,然后再显示它?有什么更好的方法?
【问题讨论】:
-
我想我不明白你的问题。你想让我做什么?我的意思是,当您通过 wcf 服务访问数据库时,您必须将数据“放置”在某个地方,以便可以将其序列化并发送给您的调用者(恰好是 silverlight)。如果它太慢你可能想删除 Thread.Sleep() 然后...
-
我实际上想直接在 WCF 类中访问任何 silverlight 方法,这样每当我按顺序从数据库中获取任何数据时,我可以在等待一秒钟后直接将其显示到 silverlight,而无需将其放在首位在 List 集合对象中。有可能吗?
标签: c# .net silverlight wcf