🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: alt.pl.comp.lang.csharp
Article #21674

Re: Własne okno dialogowe singleton, wywoływane z wątków?

#21674
From: Łukasz 'Maly' Ostrowski
Date: Fri, 09 Jul 2010 10:15
53 lines
2625 bytes
On Fri, 9 Jul 2010 10:38:51 +0200, gomis wrote:
> Mam taki problem.
> Muszę wykonać okno typu MessageBox lub MessageDialog, które może wyświetlać 
> komunikaty z róznych wątków. Obecnie wykonałem taką formę w oparciu o typ 
> Singleton. Program jednak potyka mi się gdy chcę wywołac okno z poziomu 
> różnych wątków. Zwłaszcza gdy następuje odwołanie to elementów tegoz okna 
> metodami Visible,Show itp. Wiem jak należy wykonać własnego refresha okna:
> 
> private delegate void MRefreshDelegate();
> public void MRefresh()
> {
>     if (FMsg.Instance.InvokeRequired)
>     {
>         FMsg.Instance.Invoke((MRefreshDelegate)delegate
>         {
>                 FMsg.Instance.Refresh();
>         });
> 
> } }
> 
> 
> 
> Natomiast nie wiem jak prawidłowo kreować okno z poziomu wątków. Może są 
> jakieś inne rozwiązania tego problemu?

Okno nie powinno być kreowane przez wątek inny niż wątek UI,
takich wątków jest precyzyjnie jeden ;-). I to ten wątek jest
ownerem i dispatcherem tego okna, ponieważ jako jedyny wisi
w message pump'ie.

Dostęp do wszystkich innych metod tego okna powinien wyglądać 
analogicznie do Refresh. Poprzez Invoke.

if(ctrl.InvokeRequired)
{
    ctrl.Invoke(new SomeDelegate(() => {
        ctrl.Show();
    }))
}

Ew. można "powiadamiać" (okno głowne/watęk UI) aplikacji
że ma coś wyświetlić.

Ile osób tyle rozwiązań, i ile założeń funkcjonalnych
tyle problemów z tymi rozwiązaniami ;-). Napisz coś 
więcej - np. po co chcesz właściwie tworzyć okno w
wątku pobocznym?

P.s. Czemu to jest właściwie Singleton?

-- 
Pozdrawiam,
Łukasz 'Maly' Ostrowski.      http://l3v.pl/
Technical Details
Message-ID: <145nh32fpp3hh.pzydy3jgp3q4$.dlg@40tude.net>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!nf1.ipartners.pl!ipartners.pl!news.task.gda.pl!news.dialog.net.pl!not-for-mail
References: <i16n72$pkd$1@news.task.gda.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!nf1.ipartners.pl!ipartners.pl!news.task.gda.pl!news.dialog.net.pl!not-for-mail
From: Łukasz 'Maly' Ostrowski <maly@USUNnemo.pl>
Newsgroups: alt.pl.comp.lang.csharp
Subject: Re: Własne okno dialogowe singleton,
 wywoływane z wątków?
Date: Fri, 9 Jul 2010 12:15:57 +0200
Organization: Acme
Lines: 53
Message-ID: <145nh32fpp3hh.pzydy3jgp3q4$.dlg@40tude.net>
References: <i16n72$pkd$1@news.task.gda.pl>
NNTP-Posting-Host: static-78-9-71-129.ssp.dialog.net.pl
Mime-Version: 1.0
X-Trace: news.dialog.net.pl 1278670571 14290 78.9.71.129 (9 Jul 2010 10:16:11 GMT)
X-Complaints-To: abuse@dialog.net.pl
NNTP-Posting-Date: Fri, 9 Jul 2010 10:16:11 +0000 (UTC)
User-Agent: 40tude_Dialog/2.0.15.1
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit