tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルWindowsサービスでのプログレス画面表示
記事No7822
投稿日: 2008/07/15(Tue) 22:45
投稿者えみーな
お世話になります。

早速ですが、現在Windowsサービスのアプリケーションを作成しているのですが、
そのアプリの中で、処理の進捗を表示するプログレス画面を表示させたいと思っております。

つまり、メインの処理とプログレス画面を別スレッドにて表示させたいと思っています。

ですが、メインの処理とプログレス画面を別で動かすことがうまくいきません。

どなたか良い方法をお教えいただけないでしょうか?

ちなみに、プログレス画面は定義情報次第で、表示の有り無しがあります。
また、プログレス画面で、キャンセル(メイン処理の中止)も行いたいと思っています。

以上、よろしくお願いいたします。

[ツリー表示へ]
タイトルRe: Windowsサービスでのプログレス画面表示
記事No7823
投稿日: 2008/07/16(Wed) 01:10
投稿者魔界の仮面弁士
> 早速ですが、現在Windowsサービスのアプリケーションを作成しているのですが、
> そのアプリの中で、処理の進捗を表示するプログレス画面を表示させたいと思っております。
そもそも、対話形式のサービスの作成については、サポートされていないはずです。
(System.ServiceProcess.ServiceType の項に書かれています)

サービスは、デスクトップに誰もログオンしていない状態でも動き続けますので、
画面は基本的にご法度です。サービスの実行ユーザは、対話モードが許可されていない
場合も多いですから。

このような場合は、
 ・サービス本体
 ・進捗表示のためのツール
という 2 本構成になるでしょう。(たとえば、IIS サービスに対する管理ツールのように)


また最近の OS では、複数のユーザーが同時にデスクトップ画面にログオンすることも
あるため(XP Media Center Edition のファミリログオン機能とか、Server OS への
リモートデスクトップ接続とか)、進捗表示の EXE については、複数同時に
起動される事も考慮する必要があるでしょう。


> つまり、メインの処理とプログレス画面を別スレッドにて表示させたいと思っています。
スレッドではなく、プロセスから分けないと駄目だと思いますよ。


> どなたか良い方法をお教えいただけないでしょうか?
サービスの停止/中断程度なら、System.ServiceProcess.ServiceController クラスで。
より高度な通信が必要ならば、このあたりとか。
http://msdn.microsoft.com/ja-jp/library/5dwytyss%28VS.80%29.aspx

[ツリー表示へ]