Article View: alt.pl.comp.lang.csharp
Article #21674Re: Własne okno dialogowe singleton, wywoływane z wątków?
From: Łukasz 'Maly' Ostrowski
Date: Fri, 09 Jul 2010 10:15
Date: Fri, 09 Jul 2010 10:15
53 lines
2625 bytes
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-mailReferences:
<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