ホームページ  >  記事  >  バックエンド開発  >  golang ウィンドウが閉じるまで待つ

golang ウィンドウが閉じるまで待つ

WBOY
WBOYオリジナル
2023-05-10 21:55:36395ブラウズ

golang で GUI アプリケーションを作成する場合、次のステップに進むためにユーザーがウィンドウを閉じるまで待つ必要があることがよくあります。この記事では、golangでウィンドウが閉じるのを待つ方法を紹介します。

  1. チャネルを使用して待機を実装する

golang では、チャネルはゴルーチン間の通信に使用されるデータ構造です。チャネルを使用してウィンドウが閉じるのを待つことができます。

まず、終了イベントを受信するチャネルを作成する必要があります。次に、ウィンドウを閉じるイベントが発生すると、そのイベントをチャネルに送信し、メインの goroutine でチャネルがイベントを受信するのを待ちます。

以下はサンプル コードです:

package main

import (
    "fmt"
    "github.com/andlabs/ui"
)

func main() {
    // 创建一个channel,用于接收关闭事件
    done := make(chan struct{})

    // 创建窗口
    window := ui.NewWindow("Golang窗口等待关闭示例", 200, 100, false)

    // 处理窗口关闭事件
    window.OnClosing(func(*ui.Window) bool {
        close(done) // 发送关闭事件到通道
        return true // 关闭窗口
    })

    // 显示窗口
    window.Show()

    // 等待关闭事件
    <-done

    fmt.Println("窗口已关闭")
}

上記のコードでは、andlabs/ui パッケージを使用してウィンドウを作成しました。ウィンドウが閉じられると、close イベントをチャネルに送信し、チャネルがイベントを受信するまでメイン goroutine で待機します。

  1. sync.WaitGroup を使用して待機する

チャネルを使用して待機することに加えて、同期パッケージの WaitGroup を使用してウィンドウが閉じるのを待つこともできます。

WaitGroup は、ゴルーチンのグループの終了を待つために使用されるカウント セマフォです。 Add メソッドを使用してカウンターをインクリメントし、Done メソッドを使用してカウンターをデクリメントし、Wait メソッドを使用してカウンターがゼロになるのを待機します。

以下はサンプル コードです:

package main

import (
    "fmt"
    "github.com/andlabs/ui"
    "sync"
)

func main() {
    // 创建WaitGroup
    var wg sync.WaitGroup
    wg.Add(1)

    // 创建窗口
    window := ui.NewWindow("Golang窗口等待关闭示例", 200, 100, false)

    // 处理窗口关闭事件
    window.OnClosing(func(*ui.Window) bool {
        wg.Done() // 减少计数器
        return true // 关闭窗口
    })

    // 显示窗口
    window.Show()

    // 等待关闭事件
    wg.Wait()

    fmt.Println("窗口已关闭")
}

上記のコードでは、sync.WaitGroup を使用してウィンドウが閉じるのを待ちます。まず、WaitGroup を作成し、カウンターをインクリメントします。ウィンドウが閉じられると、Done メソッドを呼び出してカウンターをデクリメントします。最後に、Wait メソッドを呼び出して、カウンターがゼロになるのを待ちます。

概要

golang で GUI アプリケーションを作成する場合、ウィンドウが閉じるのを待つのが一般的な要件です。 Channel または WaitGroup を使用して待機を実装できます。チャネルを使用して待機を実装すると、より柔軟であり、複数のゴルーチンで使用できますが、メインのゴルーチンでイベントを待機する必要があります。 WaitGroup を使用して待機を実装するのは比較的簡単ですが、カウンターが正しく使用されていることを確認する必要があります。いずれにせよ、メインのゴルーチンに通知するには、ウィンドウのクローズ イベントでクローズ イベントを送信する必要があります。

以上がgolang ウィンドウが閉じるまで待つの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。