ここから本文です

UWSCの時間指定について質問があります。 5秒を経過したら処理を中断して次の作...

aa9********さん

2016/3/715:21:06

UWSCの時間指定について質問があります。

5秒を経過したら処理を中断して次の作業に移るようにしたいのですが、
下記の場合、A1とA2の処理が終わるまでCに移りません。

//---時間指定---//
t = gettime() //開始時間//
While !getkeystate(vk_esc) //ESCキーで強制 終了//
now = gettime() //経過時間//
If now - t >= 5 then BREAK //5秒を経過したら処理中断//
Call テストA.UWS
Call テストB.UWS
Wend
Call テストC.UWS

//---A.UWS---//
print ("a1")
Sleep(1)
print ("a2")
Sleep(1)
print ("a3")
Sleep(1)
print ("a4")
Sleep(1)
print ("a5")
Sleep(1)
print ("a6")
Sleep(1)
print ("a7")
Sleep(1)
print ("a8")
Sleep(1)
print ("a9")
Sleep(1)
print ("a10")

//---B.UWS---//
print ("b1")
Sleep(1)
print ("b2")
Sleep(1)
print ("b3")
Sleep(1)
print ("b4")
Sleep(1)
print ("b5")
Sleep(1)
print ("b6")
Sleep(1)
print ("b7")
Sleep(1)
print ("b8")
Sleep(1)
print ("b9")
Sleep(1)
print ("b10")

//---C.UWS---//
print ("END")

この場合、 - print ("a5") - の5秒の所で処理を止めたいのですが、
どのようにすれば良いのか解りません。
どなたか、宜しくお願い致します。

閲覧数:
414
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

jun********さん

2016/3/719:07:39

どのような処理を組むにせよ、呼び出したスクリプト「A.uws」「B.uws」の側にも、5秒経過したら処理を中断する仕組みが必要です。
THREADを使えば、タイマーを並列動作させることはできますが、それ以前に、そのタイマーの値を受け取る仕組みが必要です(UWSCに割り込み処理はありませんから)。

THREADを使わないならば、スクリプトを呼び出す際に現在の時刻と経過時間情報を引き渡し、それを参照して、呼び出された側での小細工を施す必要があります。
THREADを使うならば、呼び出し元でPUBLIC宣言した変数を、THREADで利用し、その変数を使って、呼び出された側のタイマー処理を組みます。

  • 質問者

    aa9********さん

    2016/3/808:16:12

    ご回答ありがとうございます。
    割り込み処理の処理が複雑なことが、わかりました。
    始めたばかりでご回答頂いた内容があまり理解出来ていません。
    もう少し勉強してみます。

  • その他の返信(2件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

ベストアンサー以外の回答

1〜1件/1件中

dar********さん

2016/3/717:02:49

thread 関数名
を使って時間を数える関数を別に作ります

thread timer()

function timer

fend

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる