C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: Sleepを停止させる方法


(過去ログ 78 を表示中)

[トピック内 11 記事 (1 - 11 表示)]  << 0 >>

■46000 / inTopicNo.1)  Sleepを停止させる方法
  
□投稿者/ Raven (1回)-(2010/01/22(Fri) 21:06:17)

分類:[C#] 

こんにちは
C#を使っています

for(int i = 0; i < 60; i++){

     コード

   Thread.Sleep(1000);

     コード

   Thread.Sleep(1000);

}

このようなコードを実行すると2分間触れませんよね
このときキー入力で抜けたいのですが、可能ですか

引用返信 編集キー/
■46001 / inTopicNo.2)  Re[1]: Sleepを停止させる方法
□投稿者/ みきぬ (735回)-(2010/01/22(Fri) 21:39:17)
こういうことがやりたいのかしら。

class Program
{
    static bool isBashed = false;
    static void Main(string[] args)
    {
        Console.WriteLine("キーを押すと起こします。");
        new Thread(new ThreadStart(sleep)).Start();
        Console.ReadKey();
        isBashed = true;
        Console.ReadLine();
    }
    static void sleep()
    {
        for (int i = 0; i < 120; i++)
        {
            Console.WriteLine("(-_-) {0}", new string('z', (i % 5) + 1));
            Thread.Sleep(1000);
            if (isBashed) break;
        }
        Console.WriteLine("Σ(x_x)!");
    }
}

引用返信 編集キー/
■46017 / inTopicNo.3)  Re[2]: Sleepを停止させる方法
□投稿者/ Raven (2回)-(2010/01/23(Sat) 11:54:22)
No46001 (みきぬ さん) に返信
 
ありがとうございます

説明が足りなかったのですみません
わたしは今フォームアプリケーションを作っています
そこでこのようなコードに書きかえましたが上手くいきませんでした
(そもそも黒いのが出ませんでした)
訂正をお願いします

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("キーを押すと起こします。");
    Form1 form = new Form1();
        Application.Run(form1);
        Console.ReadKey();
        form.isBashed = true;
        Console.ReadLine();
    }
}


引用返信 編集キー/
■46018 / inTopicNo.4)  Re[3]: Sleepを停止させる方法
□投稿者/ .SHO (1164回)-(2010/01/23(Sat) 12:07:37)
No46017 (Raven さん) に返信

> わたしは今フォームアプリケーションを作っています
> そこでこのようなコードに書きかえましたが上手くいきませんでした
> (そもそも黒いのが出ませんでした)

黒いのってなに???
DOS窓?
引用返信 編集キー/
■46019 / inTopicNo.5)  Re[3]: Sleepを停止させる方法
□投稿者/ 魔界の仮面弁士 (1461回)-(2010/01/23(Sat) 12:35:47)
No46017 (Raven さん) に返信
> わたしは今フォームアプリケーションを作っています
大前提として、フォームからは Sleep を使わないようにしてください。
次に、本題のキー入力の件ですが、これは KeyPress イベント等を使えば良いかと。

> そこでこのようなコードに書きかえましたが上手くいきませんでした
> (そもそも黒いのが出ませんでした)
最終的に何をやりたいのかが見えてこないのですが、とりあえず、
System.Windows.Forms.Form から Console.ReadKey() 等を利用したいという意味なら、
それは WinExe としてではなく、コンソールアプリとしてコンパイルする必要があります。

しかし、そもそも通常はコンソールからの入力を利用するのではなく、
キー入力をフォームのイベントで受け取ったり、あるいは
TextBox に入力させるなどして対応する方が自然だと思いますよ。
引用返信 編集キー/
■46021 / inTopicNo.6)  Re[4]: Sleepを停止させる方法
□投稿者/ やじゅ (1476回)-(2010/01/23(Sat) 15:03:21)
やじゅ さんの Web サイト
> ■No46017 (Raven さん) に返信

いい悪いはあるけど、単純なApplication.DoEventsメソッド使うとか

時間のかかる処理をユーザーが停止できるようにする
http://dobon.net/vb/dotnet/programing/abortprocess.html

引用返信 編集キー/
■46022 / inTopicNo.7)  Re[5]: Sleepを停止させる方法
□投稿者/ Azulean (510回)-(2010/01/23(Sat) 15:21:34)
2010/01/23(Sat) 15:23:56 編集(投稿者)

なぜ Sleep をしたいのか、そこを明確にしてからの話だと思います。

例えば、何かと通信するために一定時間毎に待ちを置いて繰り返す必要があるのであればそれを説明してください。
(モーダルダイアログを表示しつつ、バックグラウンドでループを回して、Sleep の代わりに AutoResetEvent を使って、待ちと抜けるを両立させてみるとか。)
引用返信 編集キー/
■46039 / inTopicNo.8)  Re[3]: Sleepを停止させる方法
□投稿者/ Jitta on the way (530回)-(2010/01/23(Sat) 21:26:04)
No46017 (Raven さん) に返信
> ■No46001 (みきぬ さん) に返信
>
> ありがとうございます
>
> 説明が足りなかったのですみません
> わたしは今フォームアプリケーションを作っています
> そこでこのようなコードに書きかえましたが上手くいきませんでした
> (そもそも黒いのが出ませんでした)
> 訂正をお願いします
>
> class Program
> {
> static void Main(string[] args)
> {
> Console.WriteLine("キーを押すと起こします。");
>     Form1 form = new Form1();
> Application.Run(form1);

ここでブロックするので、次の行はフォームを閉じなければ実行されません。


多くの返信が繰り返される質問は、質問者からの情報不足であるケースが大半を占めます。
私たちは、あなたが求める答えを持っているかもしれません。しかしその答えを引き出すためには、あなたが何をしようとして、実際にどの様に行って、期待とどの様に異なる結果をえたのか、知らなければなりません。
もう一度、質問文を読み直し、「何をしているのか知らない人」にしていることを知らせるために必要なことを補ってください。
引用返信 編集キー/
■46059 / inTopicNo.9)  Re[3]: Sleepを停止させる方法
□投稿者/ Raven (3回)-(2010/01/24(Sun) 13:22:03)
様々な進言、御忠言ありがとうございます
どうやら不可能なようですのでTimerを使います(最初からこうすればよかったのですね)

解決済み
引用返信 編集キー/
■46060 / inTopicNo.10)  Re[4]: Sleepを停止させる方法
□投稿者/ なちゃ (379回)-(2010/01/24(Sun) 13:44:17)
No46059 (Raven さん) に返信
> どうやら不可能なようですのでTimerを使います(最初からこうすればよかったのですね)

一応念のために書きますが、別に不可能ということではありませんよ。
ただ、今回の内容ならTimerで事足りる可能性は高そうですし
Timer使うのが一番簡単、シンプルだというだけです。
※今回の内容も何がしたいのかは実はよく分かってないんですけどね

もし、今のループ内での1回あたりの処理が結構時間かかったりするものなら、
スレッドを使うとかした方がいい可能性もあります。

解決済み
引用返信 編集キー/
■46063 / inTopicNo.11)  Re[4]: Sleepを停止させる方法
□投稿者/ Jitta on the way (531回)-(2010/01/25(Mon) 07:23:36)
No46059 (Raven さん) に返信
> 様々な進言、御忠言ありがとうございます
> どうやら不可能なようですのでTimerを使います(最初からこうすればよかったのですね)
>

なんで、こう、努力をせずに結果を得ようとするのかなぁ?少ない努力で結果を得られるなら、それに越したことはないけど、努力もなしに結果を得ることなんてできないよ。やったことに応じた報いを受ける。それが因果応報ってもんだよ。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -