@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

待ち時間を設ける事は可能でしょうか?

投稿者投稿内容
やすけ
ベテラン
会議室デビュー日: 2003/08/20
投稿数: 87
投稿日時: 2003-10-22 10:39
中村です。
 VB.NETで、こんなことは可能か、皆さんに質問します。
VB.NET2002で作成したシステムを終了するときに
DBとして使用しているmdb(AccessXPです)を起動して
10秒から20秒ぐらい待ってからmdbも.NETも終了させたいのです。
 なぜ、mdbを起動させたいかというと、mdb終了時に最適化を行うように
しているので、mdbを起動させて終了させれば自動で最適化できると
考えたからです。
 mdb起動方法は、Shell関数またはProcessどちらかで起動するのですが、
その「10秒から20秒待ってから」ということがVB.NETで、可能でしょうか?
どなたかご存知の方、ご教授願います。
環境
VB.NET2002 OS:XP mdb:AccessXP

_________________
よねKEN
ぬし
会議室デビュー日: 2003/08/23
投稿数: 472
投稿日時: 2003-10-22 11:52
引用:

やすけさんの書き込み (2003-10-22 10:39) より:
 mdb起動方法は、Shell関数またはProcessどちらかで起動するのですが、
その「10秒から20秒待ってから」ということがVB.NETで、可能でしょうか?



System.Threading.Thread.Sleepメソッドではどうでしょうか?
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-10-22 12:07
こんにちは。

 ちょっとわかりにくいのですが...

1.ユーザが終了を指示する
 (ここで、終了の方法はいろいろあることに注意)
2.Accessデータベースを開く
3.Accessデータベース内の、何らかの処理を実行
  同時に、アプリは10〜20秒の待機に入る
4.アプリは待機終了後、Accessデータベースの処理の状態にかかわらず、
 Accessもろとも終了する

ということでしょうか?
 上記の処理で良いなら、FormのClosingイベントで、Accessを開くスレッドをおこします。メインスレッドは待機に入り、待機終了後、Accessスレッドを停止させ、Trueで返ります。


 「10〜20秒」とは、何を基準にして求めるのでしょう?固定なのか、可変なのか。可変ならばどうやって?
yoo
会議室デビュー日: 2003/04/03
投稿数: 12
投稿日時: 2003-10-22 12:28
引用:

 「10〜20秒」とは、何を基準にして求めるのでしょう?固定なのか、可変なのか。可変ならばどうやって?



確かに、その10〜20秒というビミョウな数値はどこからでてきているのでしょうね?

処理の内容としてはMDBにマクロか何かが仕込んであり、それを起動することによって最適化
するということでしょうか?

Shell関数を使わずに直接VB.NETからMDBの最適化を行うこともできますよ。

↓コードはC#ですが。こんな感じで。
 同じことだと思いますが、「最適化」ではなく「圧縮」というタイトルでVB.NETのコードもありました。ただし、形式がAccess2000になるって言ってますね・・・XPはどうなんだろ?
あくまでもご参考まで。
http://support.microsoft.com/default.aspx?scid=kb;ja;306538
やすけ
ベテラン
会議室デビュー日: 2003/08/20
投稿数: 87
投稿日時: 2003-10-22 13:05
中村です。
よねKENさん、Jittaさん、yooさん、早速のご返答ありがとうございます。
説明の仕方が下手で申し訳ございません。
簡単に言いますと、
1.フォームAというフォーム上の終了ボタンをクリックする。
2.Accessを開く。
3.Accessが完全に起動するまで待つ(固定で10秒ぐらい)
4.3で、待機後アプリとAccess両方を終了させる。
こんな感じの処理をしたいと思っています。
待機する秒数ですが、固定で10〜20秒ぐらいの待機をしたいです。
こんな幹事の説明でお分かりいただけたでしょうか?
よろしくお願いします。
よねKEN
ぬし
会議室デビュー日: 2003/08/23
投稿数: 472
投稿日時: 2003-10-22 13:32
引用:

待機する秒数ですが、固定で10〜20秒ぐらいの待機をしたいです。



単純に一定時間待つ方法は前回の投稿の通りです。
(Sleepすると操作を受け付けないため一見フリーズしたようになるので、
そうなると困る場合は、For文とApplication.DoEventsを使ってフリーズしないように要調整)

別の手として、CreateObjectでAccessを起動して、
Accessの終了メソッド(Quit?)で終了するという手もあるかと思います。
ほむら
ぬし
会議室デビュー日: 2003/02/28
投稿数: 583
お住まい・勤務地: 東京都
投稿日時: 2003-10-22 15:55
ほむらです。
yoo氏の言っていた直接MDBを最適する方法で無い場合。
最悪MDBの破壊につながりませんか?
ちと、疑問に思ったので。。。
_________________
Message From ほむら
ほむら
ぬし
会議室デビュー日: 2003/02/28
投稿数: 583
お住まい・勤務地: 東京都
投稿日時: 2003-10-22 15:57
ほむらです。
yoo氏の言っていた直接MDBを最適する方法で無い場合。
最悪MDBの破壊につながりませんか?
ちと、疑問に思ったので。。。
_________________
Message From ほむら

スキルアップ/キャリアアップ(JOB@IT)