0

スレッド機能を提供するためにデリゲートを作成する必要があるのは本当に嫌いです。現在メソッド A を使用して作業を行っていたが、スレッドで実行した方がよいことに気付いた場合は、実際にスレッドを実行するためのデリゲートと別のメソッドを作成する必要があります。これで、メソッド B に委譲することで機能するメソッド A 開始スレッドができました。

私の質問は: *スレッド宣言自体に機能をラップできますか? *

何かのようなもの

System.Threading.Thread t = new System.Threading.Thread(new System.Threading.ThreadStart(
                new delegate()
                {
            SqlConnection Connection = Helpers.ConnectionHelper.CreateConnection();
            SqlCommand cmd = new SqlCommand("MarkNotificationRead", Connection);
            cmd.CommandType = CommandType.StoredProcedure;

            cmd.Parameters.Add("@id", SqlDbType.BigInt).Value = this.id;

            Connection.Open();

            try
            {
                cmd.ExecuteNonQuery();
            }

            catch 
            {

            }

            Connection.Close();
                });

どこかでこのようなことが行われたのを見たことがありますが、その例はもう見つかりません。

4

1 に答える 1

0

newあなたが持っているものは非常に近く、わずかな構文の変更だけです -とを取り除きます():

System.Threading.Thread t = new System.Threading.Thread(new System.Threading.ThreadStart(
            delegate
            {
        SqlConnection Connection = Helpers.ConnectionHelper.CreateConnection();
        SqlCommand cmd = new SqlCommand("MarkNotificationRead", Connection);
        cmd.CommandType = CommandType.StoredProcedure;

        cmd.Parameters.Add("@id", SqlDbType.BigInt).Value = this.id;

        Connection.Open();

        try
        {
            cmd.ExecuteNonQuery();
        }

        catch 
        {

        }

        Connection.Close();
            }));

ThreadStart別の方法は、呼び出しを取り除くことができるラムダ構文を使用することです。

System.Threading.Thread t = new System.Threading.Thread(
            () =>
            {
                  ...
            });
于 2013-05-11T23:20:28.977 に答える