API Basic WaitUntil ko - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki

Wait Until / Timeout

ClassicUO โ€ข Basic

Wait Until์€ ์กฐ๊ฑด์ด ์ฐธ์ด ๋˜๊ฑฐ๋‚˜ ์ œํ•œ ์‹œ๊ฐ„์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. VB.NET ๋ฌธ์ด ์•„๋‹Œ Basic ํ™•์žฅ์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ์Šคํฌ๋ฆฝํŠธ์—์„œ ์‹คํ–‰ํ•˜๋ฉฐ ์ƒˆ ์Šค๋ ˆ๋“œ๋‚˜ ๋‹ค๋ฅธ ํ”„๋กœ์‹œ์ €๋ฅผ ์‹œ์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ •ํ™•ํ•œ ๊ตฌ๋ฌธ

Wait Until condition Timeout milliseconds

๋งค๊ฐœ๋ณ€์ˆ˜

  • condition โ€” condition์€ ์ฆ‰์‹œ ํ‰๊ฐ€ํ•˜๊ณ  ์ดํ›„ ์งง์€ ๋Œ€๊ธฐ ์‚ฌ์ด์— ๋‹ค์‹œ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. Boolean ๋˜๋Š” ๋น„๊ต์‹์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ˆซ์ž 0์€ false์ด๋ฉฐ ๋‚˜๋จธ์ง€๋Š” If ๊ทœ์น™์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด "false"๋Š” Boolean false๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. UO๋‚˜ ์‚ฌ์šฉ์ž ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์˜ค๋ฅ˜๋Š” ์ „ํŒŒ๋˜๊ณ  ๋ถ€์ˆ˜ ํšจ๊ณผ๋Š” ๋งค ๊ฒ€์‚ฌ๋งˆ๋‹ค ๋ฐ˜๋ณต๋ฉ๋‹ˆ๋‹ค.
  • Timeout milliseconds โ€” Timeout์€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค. milliseconds๋Š” ์ฒซ ๊ฒ€์‚ฌ ์ „์— ํ•œ ๋ฒˆ ํ‰๊ฐ€ํ•˜๋ฉฐ Integer 0..2147483647์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์Œ์ˆ˜, ์†Œ์ˆ˜, String์€ ์กฐ๊ฑด ์‹คํ–‰ ์ „์— ์˜ค๋ฅ˜๋ฅผ ๋ƒ…๋‹ˆ๋‹ค. 0์€ ์ฆ‰์‹œ ๊ฒ€์‚ฌ๋งŒ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์œ„์น˜์—์„œ๋Š” timeout์„ ์ผ๋ฐ˜ ๋ณ€์ˆ˜ ์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜๊ฐ’

๋ฌธ ์ž์ฒด๋Š” ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์„ฑ๊ณตํ•˜๋ฉด ๋‹ค์Œ ์ค„๋กœ ์ง„ํ–‰ํ•˜๊ณ  ์‹œ๊ฐ„ ์ดˆ๊ณผ๋Š” ํŒŒ์ผ๊ณผ ์ค„์ด ํฌํ•จ๋œ ์‹คํ–‰ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. Try/Catch ๋˜๋Š” On Error๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์—†์œผ๋ฉด ํ˜„์žฌ ์‹คํ–‰์ด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ์ž๋™์œผ๋กœ false๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ์ œ 2์—์„œ True/1 ๋˜๋Š” False/0์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ง์ ‘ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋™์ž‘

  • ์—”์ง„์€ ์‹œ๊ฐ„์„ ์ €์žฅํ•˜๊ณ  ๋‹จ์กฐ ์ฆ๊ฐ€ Stopwatch๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ฒซ ์ฆ‰์‹œ ๊ฒ€์‚ฌ๋Š” ์ œํ•œ์ด 0์ด์–ด๋„ ์„ฑ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. false์ด๋ฉด ๋ฃจํ”„์—์„œ ์ทจ์†Œ์™€ ์ผ์‹œ ์ •์ง€๋ฅผ ํ™•์ธํ•˜๊ณ  ๋‚จ์€ ์‹œ๊ฐ„์„ ๊ณ„์‚ฐํ•œ ๋’ค ์ตœ๋Œ€ 10๋ฐ€๋ฆฌ์ดˆ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ง€์†์ ์ธ ๋ฐ”์œ ๋ฃจํ”„๋ฅผ ํ”ผํ•˜๋ฉฐ ์šด์˜์ฒด์ œ ์Šค์ผ€์ค„๋ง์œผ๋กœ ๊ฐ„๊ฒฉ์ด ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ผ์‹œ ์ •์ง€๋Š” ๊ฒ€์‚ฌ๋ฅผ ๋ฉˆ์ถ”์ง€๋งŒ ์‹ค์ œ ๊ฒฝ๊ณผ ์‹œ๊ฐ„์€ ์ œํ•œ์— ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์žฌ๊ฐœํ•  ๋•Œ ๊ธฐํ•œ์ด ์ง€๋‚ฌ์œผ๋ฉด ๋‹ค์Œ ๊ฒ€์‚ฌ ์ „์— ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ค‘์ง€๋Š” ๋Œ€๊ธฐ๋ฅผ ์ค‘๋‹จํ•˜๊ณ  ๋‹ค๋ฅธ ๊ธด๊ธ‰ ์ทจ์†Œ์ฒ˜๋Ÿผ ์Šคํฌ๋ฆฝํŠธ Catch/Finally๋ฅผ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค. condition ์•ˆ์—์„œ ๋ง‰ํžŒ ํ˜ธ์ถœ์„ ๊ฐ•์ œ๋กœ ์ค‘๋‹จํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์กฐ๊ฑด ํ•จ์ˆ˜๋Š” ์งง๊ฒŒ ์œ ์ง€ํ•˜์„ธ์š”. ์‹œ์ž‘๋œ ๊ฒ€์‚ฌ๋Š” ๋๋‚œ ๋’ค ๊ฒฐ๊ณผ ๋˜๋Š” ์˜ค๋ฅ˜๊ฐ€ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.
  • ์กฐ๊ฑด ์˜ค๋ฅ˜๋ฅผ ์‹œ๊ฐ„ ์ดˆ๊ณผ๋กœ ๋ฐ”๊พธ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ์˜ค๋ฅ˜์™€ ์‹œ๊ฐ„ ์ดˆ๊ณผ๋Š” ํ•ด๋‹น Finally๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋ณ€์ˆ˜๋Š” ํ˜„์žฌ ํ˜ธ์ถœ์— ์†ํ•˜๋ฉฐ ๋‹ค์‹œ ์ง„์ž…ํ•˜๋ฉด ์ƒˆ ์ œํ•œ ์‹œ๊ฐ„์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. End Wait๋‚˜ ์ถ”๊ฐ€ ๊ฒ€์‚ฌ ๊ฐ„๊ฒฉ ์ธ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. Wait(milliseconds)๋Š” ๋ณ„๋„์˜ ์ง€์—ฐ ํ•จ์ˆ˜๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ

1. ์‹œ๊ฐ„ ์ œํ•œ ์•ˆ์—์„œ ํ•จ์ˆ˜ ํ™•์ธํ•˜๊ธฐ

# checks๋Š” 0์œผ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. Ready๊ฐ€ ByRef๋กœ ๋ฐ›์•„ ๋งค ๊ฒ€์‚ฌ๋งˆ๋‹ค ์ฆ๊ฐ€์‹œํ‚ค๋ฉฐ required=3์€ ByVal์ž…๋‹ˆ๋‹ค. budget=5000์€ ์ตœ๋Œ€ 5์ดˆ์ž…๋‹ˆ๋‹ค. ์ฒซ ๋‘ ๊ฒ€์‚ฌ๋Š” false, ์„ธ ๋ฒˆ์งธ๋Š” true์—ฌ์„œ Main์€ Integer 3์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„ ์—ฐ๊ฒฐ ๋ชจ์˜ ๊ตฌํ˜„์ด ์•„๋‹Œ ๊ฒฐ์ •์ ์ธ ํด๋ง ์˜ˆ์ œ์ด๋ฉฐ ์‹ค์ œ ํ•„์š”ํ•œ ์ƒํƒœ ์กฐ๊ฑด์œผ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Option Explicit On
Function Ready(ByRef checks As Integer, ByVal required As Integer) As Boolean
    checks += 1
    Return checks >= required
End Function

Sub Main()
    Dim checks As Integer = 0
    Const budget = 5000
    Wait Until Ready(checks, 3) Timeout budget
    Return checks
End Sub

๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฐ ์‹คํ–‰ ์„ค๋ช…:

checks๋Š” 0์œผ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. Ready๊ฐ€ ByRef๋กœ ๋ฐ›์•„ ๋งค ๊ฒ€์‚ฌ๋งˆ๋‹ค ์ฆ๊ฐ€์‹œํ‚ค๋ฉฐ required=3์€ ByVal์ž…๋‹ˆ๋‹ค. budget=5000์€ ์ตœ๋Œ€ 5์ดˆ์ž…๋‹ˆ๋‹ค. ์ฒซ ๋‘ ๊ฒ€์‚ฌ๋Š” false, ์„ธ ๋ฒˆ์งธ๋Š” true์—ฌ์„œ Main์€ Integer 3์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„ ์—ฐ๊ฒฐ ๋ชจ์˜ ๊ตฌํ˜„์ด ์•„๋‹Œ ๊ฒฐ์ •์ ์ธ ํด๋ง ์˜ˆ์ œ์ด๋ฉฐ ์‹ค์ œ ํ•„์š”ํ•œ ์ƒํƒœ ์กฐ๊ฑด์œผ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. Boolean์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜ ๋งŒ๋“ค๊ธฐ

# TryWait๋Š” ready=False์™€ budget=0์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์ฆ‰์‹œ ๊ฒ€์‚ฌ๊ฐ€ ์‹คํŒจํ•˜๋ฉด ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋‚˜๊ณ  Catch problem์ด Return False๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. Main์€ False์™€ ๋น„๊ต ๊ฐ€๋Šฅํ•œ 0์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ready=True๋ผ๋ฉด 1/True์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ์‹คํ–‰ ์˜ค๋ฅ˜๋ฅผ ์žก์œผ๋ฏ€๋กœ ๊ตฌ๋ถ„ํ•˜๋ ค๋ฉด problem์„ ํ™•์ธํ•˜์„ธ์š”. ready๋Š” Boolean ๊ฐ’์ด๋ฉฐ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.
Option Explicit On
Function TryWait(ByVal ready As Boolean, ByVal budget As Integer) As Boolean
    Try
        Wait Until ready Timeout budget
        Return True
    Catch problem
        Return False
    End Try
End Function

Sub Main()
    Dim success = TryWait(False, 0)
    Return success
End Sub

๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฐ ์‹คํ–‰ ์„ค๋ช…:

TryWait๋Š” ready=False์™€ budget=0์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์ฆ‰์‹œ ๊ฒ€์‚ฌ๊ฐ€ ์‹คํŒจํ•˜๋ฉด ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋‚˜๊ณ  Catch problem์ด Return False๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. Main์€ False์™€ ๋น„๊ต ๊ฐ€๋Šฅํ•œ 0์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ready=True๋ผ๋ฉด 1/True์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ์‹คํ–‰ ์˜ค๋ฅ˜๋ฅผ ์žก์œผ๋ฏ€๋กœ ๊ตฌ๋ถ„ํ•˜๋ ค๋ฉด problem์„ ํ™•์ธํ•˜์„ธ์š”. ready๋Š” Boolean ๊ฐ’์ด๋ฉฐ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

3. ์กฐ๊ฑด ์˜ค๋ฅ˜๋ฅผ ๋ณด์กดํ•˜๊ณ  ๋งˆ๋ฌด๋ฆฌํ•˜๊ธฐ

# CheckStatus๊ฐ€ state=-1์„ ๋ฐ›์œผ๋ฉด ์ฆ‰์‹œ "disconnected"๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. 3000๋ฐ€๋ฆฌ์ดˆ ์ œํ•œ์€ ์˜ค๋ฅ˜๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Catch๋Š” problem์„ message๋กœ ๋ณต์‚ฌํ•˜๊ณ  Finally๋Š” finished=True/1๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. Main์€ "disconnected:1"์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. state=1์€ ์ฆ‰์‹œ ์„ฑ๊ณตํ•˜๊ณ  state=0์€ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊นŒ์ง€ false์ž…๋‹ˆ๋‹ค. ๊ฒŒ์ž„ ์—ฐ๊ฒฐ ์—†์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
Option Explicit On
Function CheckStatus(ByVal state As Integer) As Boolean
    If state < 0 Then
        Throw "disconnected"
    End If
    Return state = 1
End Function

Sub Main()
    Dim message = ""
    Dim finished = False
    Try
        Wait Until CheckStatus(-1) Timeout 3000
    Catch problem
        message = problem
    Finally
        finished = True
    End Try
    Return message & ":" & CStr(finished)
End Sub

๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฐ ์‹คํ–‰ ์„ค๋ช…:

CheckStatus๊ฐ€ state=-1์„ ๋ฐ›์œผ๋ฉด ์ฆ‰์‹œ "disconnected"๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. 3000๋ฐ€๋ฆฌ์ดˆ ์ œํ•œ์€ ์˜ค๋ฅ˜๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Catch๋Š” problem์„ message๋กœ ๋ณต์‚ฌํ•˜๊ณ  Finally๋Š” finished=True/1๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. Main์€ "disconnected:1"์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. state=1์€ ์ฆ‰์‹œ ์„ฑ๊ณตํ•˜๊ณ  state=0์€ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊นŒ์ง€ false์ž…๋‹ˆ๋‹ค. ๊ฒŒ์ž„ ์—ฐ๊ฒฐ ์—†์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.


en ยท ru ยท uk ยท fr ยท de ยท it ยท es ยท zh-tw ยท ja ยท ko

Basic