Comment réparer ma Tâche que les changements de la colonne statut en SQL?

Je suis le développement d'une application windows qui lit tous les fichiers du répertoire de fichiers, prend ses lignes et de les enregistrer dans SQL. Je reçois le premier fichier 2 fois enregistré dans SQL,quand je l'appelle mon second Task qui change le status(status est une colonne que les changements de la valeur lorsque certaines opérations sont réalisées, par exemple j'ai importer le fichier status=0, j'ai envoyer les enregistrements pour l'optimisation de status=10) et je ne trouve pas vraiment un problème dans le code. Quand j' debug par étapes, il fonctionne bien? Quelqu'un qui peut voir le problème que je suis aveugle?

Ici, je fonctionne avec les tâches:

using BoxingMOSRobotics.MOS_PackOSDataSetTableAdapters;
using System;
using System.IO;
using System.Threading;
using System.Threading.Tasks;

namespace BoxingMOSRobotics
{
    class Program
    {
        static Task PopulateSQLTask;
        static Task SendForOptimizationTask;
        /*static Task MoveToOptimizedTask;*/
        static Launcher launcher;
        static DirectoryInfo dirInfo = new DirectoryInfo([email protected]"{Properties.Settings.Default.FileDirectory}");
        static IMPORT_PARTLISTTableAdapter PartListTableAdapter = new IMPORT_PARTLISTTableAdapter();

        static void Main(string[] args)
        {
            var autoEvent = new AutoResetEvent(false);
            var autoEvent1 = new AutoResetEvent(false);
            //var autoEvent2 = new AutoResetEvent(false);

            launcher = new Launcher();
            PopulateSQLTask = Task.CompletedTask;
            SendForOptimizationTask = Task.CompletedTask;
            //MoveToOptimizedTask = Task.CompletedTask;

            Timer timerPopulateSQL = new Timer(PopulateSQL, autoEvent, 0, 1000);
            Timer timerSendForOptimization = new Timer(SendingForOptimization, autoEvent1, 0, 1010);
            //Timer timerOptimized = new Timer(Optimized, autoEvent2, 0, 15000);


            Console.ReadKey();
        }

        //private static void Optimized(object state)
        //{
        //    if (MoveToOptimizedTask.IsCompleted)
        //    {
        //        MoveToOptimizedTask = new Task(new Action(() => launcher.PartMoveToOptimizedPartList(PartListTableAdapter)));
        //        MoveToOptimizedTask.Start();

        //    }
        //}

        private static void SendingForOptimization(object state)
        {
            if (SendForOptimizationTask.IsCompleted)
            {
                try
                {
                    SendForOptimizationTask = new Task(launcher.SendPartsForOptimizing);
                    SendForOptimizationTask.Start();

                }
                catch { }
            }
        }

        private static void PopulateSQL(object state)
        {
            if (PopulateSQLTask.IsCompleted)
            {
                FileInfo[] fileInfo = dirInfo.GetFiles($"{Properties.Settings.Default.FileType}");

                if (fileInfo.Length > 0)
                {
                    PopulateSQLTask = new Task(new Action(() => launcher.PopulateSQL(fileInfo[0], dirInfo))); ;
                    PopulateSQLTask.Start();
                }
            }
        }

    }
}

Méthode qui écrit en SQL:

 public void PopulateSQL(FileInfo fileInfo, DirectoryInfo dirInfo)
        {
            using (DataSet)
            {
                dataRow = DataSet.IMPORT_PARTLIST.NewRow();
                fileName = fileInfo.Name;
                try
                {
                    using (textParser = new TextFieldParser(dirInfo + "\\" + fileName))
                    {
                        textParser.TextFieldType = FieldType.Delimited;
                        textParser.SetDelimiters(Properties.Settings.Default.FileDelimiters);
                        if (textParser.ReadLine() != null)
                        {
                            while (!textParser.EndOfData)
                            {
                                string[] fieldData = textParser.ReadFields();
                                if (DataImportValidationFields(fieldData))
                                {
                                    dataRow = DataRowPartProductionMapping(dataRow, fieldData);
                                    PartListDataTable.Rows.Add(dataRow.ItemArray);
                                }
                            }
                        }
                    }
                }
                catch (Exception e) { var msg = e; }
                try
                {
                    using (DataSet)
                    {
                        PartListTableAdapter.ClearBeforeFill = true;
                        PartListTableAdapter.Update(PartListDataTable);
                        DataSet.AcceptChanges();

                    }
                    try
                    {
                        File.Move([email protected]"{dirInfo + "\\" + fileName}", [email protected]"{dirInfo + "\\ImportedFiles\\" + fileName}");
                        fileName = string.Empty;
                    }
                    catch (Exception ex)
                    {
                        var msg = ex;
                    }
                }
                catch(Exception ex) { var msg = ex; }
            }
        }

Méthode qui modifie l'état:

 public void  SendPartsForOptimizing()
        {          
            try
            {
                if ((int)PartListTableAdapter.ChecksForAnyRecords() != 0)
                {

                    Parts.Clear();
                    string badgeName = PartListTableAdapter.GetBadgeNameByStatus(Properties.Settings.Default.NotImportedFileStatus).ToString();
                    PartListTableAdapter.ClearBeforeFill = true;
                    PartListTableAdapter.FillByBadgeName(PartListDataTable, badgeName);

                    foreach (var item in PartListDataTable)
                    {
                        AddPartToListMapping(item);
                    }
                    PartListTableAdapter.UpdateStatus(Properties.Settings.Default.ImportedFileStatus, badgeName, Properties.Settings.Default.NotImportedFileStatus);
                }
            }
            catch(Exception ex) { var msg = ex; }
        }
0
2019-09-19 12:28:48
source
0 réponses

Voir d'autres questions sur les étiquettes