Categories
SugiBlog ホームページ制作・システム開発

匿名スレッドの実行 VisualC#

スレッドを定義します。

Thread tMain = new Thread(new ThreadStart(
    delegate()
    {
        // 実行したい処理
    }
    ));

バックグラウンドで実行するよう設定

tMain.IsBackground = true;

スレッドを開始

tMain.Start();

バックグラウンド処理からメインスレッドのメソッドや、フォームのコントロールを触りたいときは
デリゲートを使用します。以下を参考にしてください。
[デリゲート (delegate)]

386 views

Ajax レスポンス処理の注意点

Ajaxを使用して通信し、得た結果を処理するときの注意点。

サーバーサイドでオブジェクト等を生成して返し、それをeval処理する際、
無効な改行が含まれるとエラーが発生することがあります。

具体的には「終了していない文字列型の定数です。」とスクリプトエラーが発生してしまいます。

例えば、PHPで単純に以下のようなデータを出力するとします。

echo "var a = \"文字列\";";

それをJavaScriptでeval処理すると

eval(responseText);
alert(a);

「文字列」というアラートが表示される。
続きを読む…»

2,838 views

画像の非同期読み込み

画像を表示する際、読み込み完了までプログレスバーを表示させたい。
ユーザービリティを考慮し、非同期にて実装する方法を書きます。

まずXMLにProgressBarとImageViewを用意します。

<ProgressBar 
  android:id="@+id/progressBar"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  style="?android:attr/progressBarStyle"
  android:layout_gravity="center_vertical|center_horizontal"
  />
<ImageView
  android:id="@+id/imageView1"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:visibility="gone" />

続きを読む…»

3,789 views

デリゲート(delegate)

バックグラウンドで処理を実行中、メインスレッドのメソッドを実行したいとき、
通常のようには呼び出せないので、デリゲートを使って呼び出します。

メインスレッド

Thread tMain = new Thread(new ThreadStart(SampleThread));
tMain.IsBackground = true;
tMain.Start();

デリゲートの定義

delegate void SampleDelegate(string args);

メソッドの定義

private void SampleMethod(string args)
{
    Console.Writeline(args);
}

スレッド

private void StartServer()
{
    this.Invoke(new SampleDelegate(this.SampleMethod), "sample text");
}

続きを読む…»

798 views