Silverlight & C # - открывать дочернее окно, только если проходит интервал времени - PullRequest
0 голосов
/ 11 января 2011

Надеюсь, название имеет смысл, но я опишу мою проблему. Я использую дочернее окно в Silverlight для отображения сообщения обработки и поворота изображения, когда пользовательский интерфейс выполняет некоторую работу. После вызова завершенного события окно закрывается.

Проблема в том, что это выглядит немного уродливо, когда пользовательский интерфейс выполняет быструю задачу, когда дочернее окно открывается, а затем закрывается менее чем за 1 секунду.

То, что я хочу сделать, это открыть дочернее окно, только если прошло 2 секунды обработки, а затем закрыть по завершении.

Я добавил раздел моего xaml, где я звоню ребенку ниже. Я искал, но ничего не могу найти по этому поводу, и это может быть невозможно.

void edit_Closed (отправитель объекта, EventArgs e) { EditChannelDetails edit = отправитель как EditChannelDetails;

        if (edit.DialogResult == true)
        {
            if (edit != null)
            {
                Channel edited = new Channel();
                edited.channelId = Int32.Parse(edit.ChannelID.Text);
                edited.name = edit.ChannelName.Text;
                edited.description = edit.ChannelDescription.Text;

                ChannelClient proxy = new ChannelClient(new BasicHttpBinding(), new EndpointAddress("http://servername"));
                proxy.UpdateChannelCompleted += new EventHandler<UpdateChannelCompletedEventArgs>(proxy_UpdateChannelCompleted);
                proxy.UpdateChannelAsync(edited);
            }
        }
        processingDialog.Show();
    }

    void proxy_UpdateChannelCompleted(object sender, UpdateChannelCompletedEventArgs e)
    {
        processingDialog.Close();

Etc .....

1 Ответ

0 голосов
/ 11 января 2011
Boolean closeFlag = false;

Запустить таймер:

DispatcherTimer timer = new DispatcherTimer() { Interval = TimeSpan.FromSeconds(2) };

timer.Tick += (tts, tte) => {
    timer.Stop();
    closeFlag = true;
};

timer.Start();

И установить флажок:

if (!closeFlag)
{
    processingDialog.Close();
}
...