C# SQL选择数据延迟

C# SQL选择数据延迟,c#,sql,sql-server,C#,Sql,Sql Server,我有两个应用程序(A和B)和一个SQL表(Microsoft SQL Server 2014),列如下: || Guid || Random || WriteTime || Flag || ReadTime || 应用程序A将插入具有新Guid、random、WriteTime和Flag的新行 (代码A) 此函数将在TimerA_Tick中调用六次(TimerA间隔=1500毫秒) 应用程序B也有一个时间间隔为1000毫秒的TimerB。在TimerB_Tick中,它将选择Flag=0的所有行

我有两个应用程序(A和B)和一个SQL表(Microsoft SQL Server 2014),列如下:

|| Guid || Random || WriteTime || Flag || ReadTime ||
应用程序A将插入具有新Guid、random、WriteTime和Flag的新行

(代码A)

此函数将在TimerA_Tick中调用六次(TimerA间隔=1500毫秒)

应用程序B也有一个时间间隔为1000毫秒的TimerB。在TimerB_Tick中,它将选择Flag=0的所有行,并将其更改为1,还将填充“ReadTime”列

(代码B)

私有数据集DS=新数据集();
私有无效更改标志(SqlConnection conn)
{
string cmd=“从MyTable中选择*,其中Flag=0”;
SqlDataAdapter da=新的SqlDataAdapter(cmd,conn);
DS.Tables[“test”].Clear();
da.填充(DS.表格[“测试]);
锁(DS.表[“测试”])
{
使用(新的SqlCommandBuilder(da))
{
DataRow[]rows=DS.Tables[“test”]。选择(“Flag=0”,“WriteTime ASC”);
foreach(数据行中的行)
{

if(将.ToInt32(行[“随机”])这两个进程是否都在同一台机器上运行?这个问题包括.Net中now的准确性。是什么让你认为这组进程是有序的还是无序的?@destination data是的,在同一台机器上,相同的time@scsimon很抱歉,我听不懂您的话…在图片中,表格是用“WriteTime”(ASC)排序的,和“ReadTime”应按ASC的顺序排列,因为“ReadTime”按“WriteTime”的顺序更新。您提到写入计时器每1.5秒运行一次,但WriteTime值相隔不到一秒,您确定计时器按预期运行吗?
private void WriteIntoDB(int random)
    {
        SqlCommand cmd = new SqlCommand();
        using (SqlConnection conn = new SqlConnection(connectionString))
        {
            conn.Open();
            using (SqlTransaction trans = conn.BeginTransaction())
            {
                 SqlCommand command = conn.CreateCommand();
                 command.Connection = conn;
                 command.Transaction = trans;

                 command.CommandText = string.Format("INSERT INTO " + "MyTable" + "([Guid],[Random],[WriteTime],[Flag])" + "VALUES(@Guid,@Random,@WriteTime,@Flag)");
                 command.Parameters.AddWithValue("@Guid", Guid.NewGuid());
                 command.Parameters.AddWithValue("@Random", random);
                 command.Parameters.AddWithValue("@WriteTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
                 command.Parameters.AddWithValue("@Flag", 0);

                 command.ExecuteNonQuery();
                 trans.Commit();
             }
    }
private DataSet DS = new DataSet();    
private void ChangeFlag(SqlConnection conn)
   {
         string cmd = "SELECT * FROM MyTable WHERE Flag = 0";
         SqlDataAdapter da = new SqlDataAdapter(cmd, conn);
         DS.Tables["test"].Clear();
         da.Fill(DS.Tables["test"]);
         lock (DS.Tables["test"])
         {
             using (new SqlCommandBuilder(da))
             {
                 DataRow[] rows = DS.Tables["test"].Select("Flag=0 ", "WriteTime ASC");
                 foreach (DataRow row in rows)
                 {
                     if (Convert.ToInt32(row["Random"]) <= 50)
                     {
                         //do something.
                     }
                     row["ReadTime"] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
                     row["Flag"] = 1;
                     da.Update(DS.Tables["test"]);
                 }
             }
         }

     }