为什么在另一个Thread中运行方法时,第一个(也是唯一一个)数组的第一项的逻辑是重复的?

时间:2016-08-04 15:31:51

标签: c# multithreading

我在Windows应用程序中有一个按钮,它从一个Thread创建一个新实例并开始调用一个方法,该方法获取一些文件并将其内容插入到数据库中。 问题是我总是注意到第一个文件被插入到db中两次,但它与其他文件一起正常工作,尽管它们都在同一个循环中。

private Thread thrd;
thrd = new Thread(FetchNewMessages);
_status = true;
thrd.Start();

private void FetchNewMessages()
{
    try
    {
        WriteUiLog("Start fetching messages...");
        while (_status)
        {
            try
            {
                var dir = new DirectoryInfo(txtQueue.Text);
                var allFiles = dir.GetFiles("*.txt", SearchOption.AllDirectories);
                if (allFiles.Length == 0)
                {
                    continue;
                }

                foreach (var fil in allFiles)
                {
                    if (_status)
                    {
                        try
                        {
                            // insert into db
                        }
                        catch (Exception iEx)
                        {
                        }
                    }
                }
            }
            catch (Exception ex)
            {
            }
        }
    }
    catch (Exception ex)
    {
    }
}

0 个答案:

没有答案