2012-04-08 15 views
1

私はValaを学びたいので、私は小さなGUIアプリケーションを作っています。以前の私の主な言語はC#だったので、かなりうまくいっています。Valaに.NETのBackgroundWorkerと同等のものがありますか?

しかし、今私は壁に衝突しました。すぐにクライアントに応答しない外部ネットワークサーバー(GIOを使用)に接続する必要があります。これにより、プログラムが接続している間にGUIがフリーズします。

C#では、この場合はおそらくBackgroundWorkerを使用します。私はValaのためにそれのような何かを見つけるように見えることができません。

基本的に、私はProcessingDialog.valaの新しいインスタンスを作成するメソッドに特定のボタンをクリックするための信号を接続したMainWindow.valaを持っています。これは、プログラムが仕事をしている間に私がユーザに見せたい(メインウィンドウへの接続、通信中の)MainWindow上のダイアログを示しています。

このシナリオを動作させるための代替手段はありますか?

答えて

0

lethalmanの答えは、おそらくほとんどを作りますあなたがネットワーク通話をしているならば、非同期要求は本当に最善の策になるでしょう。他の場合には、thread supportで構築されたValaを使用して、バックグラウンドタスクを実行できます。それはすぐに見える、より良いライブラリが利用可能になるだろうが、これは安定している。

// Create the function to perform the task 
public void thread_function() { 
    stdout.printf("I am doing something!\n"); 
} 

public int main(string[] args) { 
    // Create the thread to start that function 
    unowned Thread<void*> my_thread = Thread.create<void*>(thread_function, true); 

    // Some time toward the end of your application, reclaim the thread 
    my_thread.join(); 

    return 1; 
} 

「--thread」オプションを付けてコンパイルすることを忘れないでください。

関連する問題