我有用於Silverlight客戶端的WCF WebService。WCF - 如何將任務延遲指定的時間?
假設客戶點擊「Make building」。
服務將接收新的任務和明星計數時間,直到它準備好進行操作(即添加到數據庫)。
時間 - 任務需要完成多少時間(即構建建築物)。
關鍵是如何將任務延遲一段時間。
此外,有沒有辦法從服務器流到客戶端的時間? 我已經安裝此:
[OperationContract]
public void GetTime()
{
foreach (IDuplexClient client in _clientDic.Values)
{
client.ShowStatus(DateTime.Now);
}
}
[OperationContract]
public void Login()
{
string clientID = OperationContext.Current.Channel.SessionId;
IDuplexClient client = OperationContext.Current.GetCallbackChannel<IDuplexClient>();
_clientDic.Add(clientID, client);
}
IDuplexClient:
[OperationContract(IsOneWay = true)]
void ShowStatus(DateTime status);
和客戶端:
_client.LoginAsync();
_client.GetTimeAsync();
_client.ShowStatusReceived += new EventHandler<ShowStatusReceivedEventArgs>(_client_ShowStatusReceived);
void _client_ShowStatusReceived(object sender, ShowStatusReceivedEventArgs e)
{
label1.Content = e.status.ToString();
}
它的工作。對於第一次運行。但時間不會刷新,這不是我想要的。 以及在瀏覽器中強制刷新之後,時間停止顯示。
public partial class MainPage : UserControl
{
Service1Client _client;
int time = 10000;
public MainPage()
{
InitializeComponent();
_client = new Service1Client(new PollingDuplexHttpBinding { DuplexMode = PollingDuplexMode.SingleMessagePerPoll, OpenTimeout = TimeSpan.FromMinutes(10), ReceiveTimeout = TimeSpan.FromMinutes(10) },
new EndpointAddress("http://localhost:44544/Service1.svc"));
_client.LoginAsync();
_client.DoWorkCompleted += new EventHandler<DoWorkCompletedEventArgs>(_client_DoWorkCompleted);
_client.DoWorkAsync();
_client.AddNewTaskAsync("testTaskzor", time);
_client.GetTimeAsync();
//_client.AddNewTaskCompleted += new EventHandler<AddNewTaskCompletedEventArgs>(_client_AddNewTaskCompleted);
_client.ShowStatusReceived += new EventHandler<ShowStatusReceivedEventArgs>(_client_ShowStatusReceived);
}
void _client_ShowStatusReceived(object sender, ShowStatusReceivedEventArgs e)
{
label1.Content = e.status.ToString();
}
void _client_DoWorkCompleted(object sender, DoWorkCompletedEventArgs e)
{
//label1.Content = e.Result;
}
}
這就是整個客戶端代碼。 雖然我終於修好了,並且時間正確地流到了客戶端(它至少在現在這個時候已經夠用了,但它足以讓foreach以正確的方式出現)。
但在另一邊。當我關閉瀏覽器並再次打開時,什麼也沒有顯示出來。在我刷新它之後,時間根本不顯示。
@Lukasz - 你能展示客戶端的實現嗎? – 2011-05-04 12:22:22