public async Task DirIterateAsync(string DirPathNWC, string DirPathNWD, Autodesk.Navisworks.Api.Automation.NavisworksApplication automationApplication)
        {
            string[] NewDir = Directory.EnumerateDirectories(DirPathNWC, "*_*_*_*_*", SearchOption.AllDirectories).ToArray();
            int      i      = 0;

            try
            {
                //Get folders
                foreach (string d in NewDir)
                {
                    i++;
                    // Make a reference to info of a directory.
                    DirectoryInfo di = new DirectoryInfo(d);

                    // Get a reference to each file in that directory.
                    FileInfo[] fiArr = di.GetFiles();


                    if (fiArr.Length != 0)
                    {
                        string dirName     = new DirectoryInfo(d).Name;
                        string FileNameNWD = dirName + "_" + CurDate + ".nwd";

                        string[] FilesList = new string[fiArr.Length];

                        FilesList = GetFilesList(d, fiArr, out string ZeroIndEl, FilesList);

                        if (ZeroIndEl != "")
                        {
                            try
                            {
                                await Task.Run(() => InitiateFileOperations(ZeroIndEl, FilesList, DirPathNWD, dirName, FileNameNWD));
                            }
                            catch (Autodesk.Navisworks.Api.Automation.AutomationException e)
                            {
                                //An error occurred, display it to the user
                                System.Windows.Forms.MessageBox.Show("Error: " + e.Message);
                            }
                            catch (Autodesk.Navisworks.Api.Automation.AutomationDocumentFileException e)
                            {
                                //An error occurred, display it to the user
                                System.Windows.Forms.MessageBox.Show("Error: " + e.Message);
                            }
                            finally
                            {
                                if (automationApplication != null)
                                {
                                    automationApplication.Dispose();
                                    automationApplication = null;
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                LogWriter(ex.ToString(), CurDateTime);
                return;
            }

            await EndTaskAsync();
        }