Silverlight 및 WCF에서 새로운 기능입니다. 나는 1 초의 대기 후에 목록 개체 컬렉션의 데이터로 경고 메시지 상자를 표시하는 곳에서 간단한 Silverlight 응용 프로그램을 만들었습니다.Silverlight 메서드를 WCF 서비스에서 호출하는 방법
WCF를 사용하여 데이터베이스에 연결했습니다. 그러나 나는 먼저 컬렉션 목록에 모든 데이터베이스 데이터를 추가 한 다음 실버 라이트가 반복되는 실버 라이트에 해당 목록 객체를 보냅니다. 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;
}
실버 코드와 두 번째의 대기 후 메시지 상자에 표시 :
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 서비스에서 실버에 직접 데이터를 표시 할 수있는 방법을 누군가가 말해 주 시겠어요? 더 나은 접근 방법은 무엇일까요?
나는 당신의 질문을 이해하지 못한다고 생각합니다. 뭐하고 싶어? wcf 서비스를 통해 데이터베이스에 액세스 할 때 어딘가에 "데이터를 넣어야"한다는 것을 의미합니다. 따라서 직렬화되어 호출자에게 전송 될 수 있습니다 (실버 라이트가 발생 함). 너무 느린 경우 Thread.Sleep()을 제거하려고 할 수 있습니다 ... – UrbanEsc
실제로 데이터베이스에서 데이터를 순차적으로 가져올 때마다 직접적으로 표시 할 수 있도록 WCF 클래스에서 직접 모든 Silverlight 메서드에 액세스하려고합니다. List 컬렉션 객체에서 첫 번째를 넣지 않고 잠시 기다린 후 실버 라이트로 바꾼다. 가능한가? – Stardust
수정 된 답변보기 – UrbanEsc