-4

説明: datetime lasthello と文字列 isconnect を含むクライアント オブジェクトのリストがあります。オブジェクトをランタイム リストではなく SQL テーブルに移動しました。私の質問は、以下が存在するエントリを探してテーブルを実行し、それを変更するにはどうすればよいですか。- かなり最適化された方法で (最適化とは高速という意味です)、「ホールド」も設定ファイルではなくテーブルに配置されます。isconnect はブール値になり、文字列ではなくなりました。

foreach(entry in mylist)
{
    if ((DateTime.Now - TimeSpan.FromSeconds(Settings.Default.Hold)) > entry.lasthello &&
                                    entry.isConnect != "Disconnected")
                                {
                                    entry.client.Disconnect();
                                }
}

SQL クエリ内でタイムスパンを計算するにはどうすればよいですか? 複数のクエリで実行する必要がありますか?

解決しました!

 using (SqlConnection conn = new SqlConnection(Connectionstring))
                {

                    SqlCommand cmd = new SqlCommand(DisconnectOnNoHello, conn);
                    cmd.Parameters.AddWithValue("@lasthello",(DateTime.Now - TimeSpan.FromSeconds(Convert.ToDouble(hold))));
                    try
                    {
                        IScsServerClient client = (IScsServerClient)ByteArrayToObject((byte[]) cmd.ExecuteScalar());    
                        client.Disconnect();
                        closeConnection(conn);
                    }
                    catch (Exception ex)
                    {
                        EventLog.WriteEntry(ex.ToString());
                    }
                }
4

1 に答える 1