private void PostTextDeserialization(string fileWay) { if (!File.Exists(fileWay)) { return; } TmpText.Clear(); Sem.WaitOne(); using (StreamWriter sw = new StreamWriter(pathLog, true, System.Text.Encoding.Default)) { sw.WriteLine("[" + DateTime.Now.ToString() + "] Началась работа метода считывающего текст из файла."); } Sem.Release(); DataContractJsonSerializer jsonFormatter = new DataContractJsonSerializer(typeof(PostText[])); using (FileStream stream = new FileStream(fileWay, FileMode.Open)) { PostText[] p = (PostText[])jsonFormatter.ReadObject(stream); TmpText = p.ToList <PostText>(); } Sem.WaitOne(); using (StreamWriter sw = new StreamWriter(pathLog, true, System.Text.Encoding.Default)) { sw.WriteLine("[" + DateTime.Now.ToString() + "] Метод считал текст из файла."); } Sem.Release(); AddText(); }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// private void AddPicture() { if (!TmpPicture.Any()) { return; } List <PostPictures> posts = TmpPicture; Sem.WaitOne(); using (StreamWriter sw = new StreamWriter(pathLog, true, System.Text.Encoding.Default)) { sw.WriteLine("[" + DateTime.Now.ToString() + "] Началась работа метода записи картинок в БД."); } Sem.Release(); Models.MyDBEntities1 db = new Models.MyDBEntities1(); List <Models.TablePicture> table = (from t in db.TablePicture select t).ToList(); int count = db.TablePicture.Count(); for (int i = 0; i < count; i++) { Models.TablePicture tableItem = (from t in db.TablePicture select t).First(); db.TablePicture.Remove(tableItem); db.SaveChanges(); } Sem.WaitOne(); using (StreamWriter sw = new StreamWriter(pathLog, true, System.Text.Encoding.Default)) { sw.WriteLine("[" + DateTime.Now.ToString() + "] Очистка картинок в БД выполнена."); } Sem.Release(); int id = 0; foreach (PostPictures item in posts) { List <string> pictures = item.PictureURLs.ToList(); foreach (string p in pictures) { Models.TablePicture t1 = new Models.TablePicture() { Picture = p, Post_Id = item.ID, Id = id }; db.TablePicture.Add(t1); id++; db.SaveChanges(); } } db.Dispose(); Sem.WaitOne(); using (StreamWriter sw = new StreamWriter(pathLog, true, System.Text.Encoding.Default)) { sw.WriteLine("[" + DateTime.Now.ToString() + "] Метод закончил загружать картинки в БД."); } Sem.Release(); }
internal QueryThread(Sem sem, string host, int type, string scope, IPAddress svr) : base("JCIFS-QueryThread: " + host) { this.Sem = sem; this.Host = host; this.Type = type; this.Scope = scope; this.Svr = svr; }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// private void AddText() { if (!TmpText.Any()) { return; } List <PostText> posts = TmpText; Sem.WaitOne(); using (StreamWriter sw = new StreamWriter(pathLog, true, System.Text.Encoding.Default)) { sw.WriteLine("[" + DateTime.Now.ToString() + "] Началась работа метода записи текста в БД."); } Sem.Release(); Models.MyDBEntities1 db = new Models.MyDBEntities1(); List <Models.TableText> table = (from t in db.TableText select t).ToList(); int count = db.TableText.Count(); for (int i = 0; i < count; i++) { Models.TableText tableItem = (from t in db.TableText select t).First(); db.TableText.Remove(tableItem); db.SaveChanges(); } Sem.WaitOne(); using (StreamWriter sw = new StreamWriter(pathLog, true, System.Text.Encoding.Default)) { sw.WriteLine("[" + DateTime.Now.ToString() + "] Очистка текста в БД выполнена."); } Sem.Release(); int id = 0; foreach (PostText item in posts) { Models.TableText t1 = new Models.TableText() { Text = item.Text, Post_Id = item.ID, Id = id }; db.TableText.Add(t1); db.SaveChanges(); id++; } db.Dispose(); Sem.WaitOne(); using (StreamWriter sw = new StreamWriter(pathLog, true, System.Text.Encoding.Default)) { sw.WriteLine("[" + DateTime.Now.ToString() + "] Метод закончил загружать текст в БД."); } Sem.Release(); }
static void Main(string[] args) { //int[] iArr = Array.ConvertAll( // (Console.ReadLine()).Split(','), // i => int.Parse(i)); Console.Write("정수 입력 : "); int num = int.Parse(Console.ReadLine()); Sem pow = a => a * a; Console.WriteLine("{0}의 제곱근 : {1}", num, pow(num)); }
/// <exception cref="UnknownHostException"></exception> internal static NbtAddress[] LookupServerOrWorkgroup(string name, IPAddress svr) { Sem sem = new Sem(2); int type = NbtAddress.IsWins(svr) ? unchecked (0x1b) : unchecked (0x1d); QueryThread q1X = new QueryThread(sem, name, type, null, svr); QueryThread q20 = new QueryThread(sem, name, unchecked (0x20), null, svr); q1X.SetDaemon(true); q20.SetDaemon(true); try { lock (sem) { q1X.Start(); q20.Start(); while (sem.Count > 0 && q1X.Ans == null && q20.Ans == null) { Runtime.Wait(sem); } } } catch (Exception) { throw new UnknownHostException(name); } if (q1X.Ans != null) { return(q1X.Ans); } if (q20.Ans != null) { return(q20.Ans); } throw q1X.Uhe; }
static void Main() { Join j = Join.Create(); j.Initialize(out wait); j.Initialize(out m1); j.Initialize(out m2); j.Initialize(out done); j.When(m1).Do(delegate { for(int i=0;i<max;i++) { s2.signal(); s1.wait(); if(i%1000 == 0) {Console.Write(1);} } done();}); j.When(m2).Do(delegate{ for(int i=0;i<max;i++) { s2.wait(); s1.signal(); if(i%1000 == 0) {Console.Write(2);} } done(); } ); j.When(wait).And(done).Do(delegate {}); DateTime start, finish; Console.WriteLine("locking semaphores"); s1=new LSem(); s2=new LSem(); start=DateTime.Now; m1(); m2(); wait(); wait(); finish=DateTime.Now; Console.WriteLine(finish.Subtract(start)); Console.WriteLine("polyphonic semaphores"); s1=new PSem(); s2=new PSem(); start=DateTime.Now; m1(); m2(); wait(); wait(); finish=DateTime.Now; Console.WriteLine(finish.Subtract(start)); Console.WriteLine("direct interruption"); t1 = new Thread(new ThreadStart(mt1)); t2 = new Thread(new ThreadStart(mt2)); start=DateTime.Now; t1.Start(); t2.Start(); wait(); wait(); finish=DateTime.Now; Console.WriteLine(finish.Subtract(start)); }
/// <exception cref="UnknownHostException"></exception> internal static NbtAddress[] LookupServerOrWorkgroup(string name, IPAddress svr) { Sem sem = new Sem(2); int type = NbtAddress.IsWins(svr) ? unchecked(0x1b) : unchecked(0x1d); QueryThread q1X = new QueryThread(sem, name, type, null, svr ); QueryThread q20 = new QueryThread(sem, name, unchecked(0x20), null, svr); q1X.SetDaemon(true); q20.SetDaemon(true); try { lock (sem) { q1X.Start(); q20.Start(); while (sem.Count > 0 && q1X.Ans == null && q20.Ans == null) { Runtime.Wait(sem); } } } catch (Exception) { throw new UnknownHostException(name); } if (q1X.Ans != null) { return q1X.Ans; } if (q20.Ans != null) { return q20.Ans; } throw q1X.Uhe; }
private void AnalysisDataExcel() { /* Открываем файл Excel и считываем информацию с первого листа "Титул" */ int NS; excel.Application ExcelApp = new excel.Application(); // создаем объект excel; ExcelApp.Visible = false; // показывает или скрывает файл Excel; openFileExcel.Filter = "Файлы Excel(*.xls)|*.xls|Excel(*.xls)|*.xls"; Action action = () => { if (openFileExcel.ShowDialog() == DialogResult.OK) { FileNaim = openFileExcel.FileName; } }; Invoke(action); // Запуск главного потока if (FileNaim == null) { return; } ExcelApp.Workbooks.Add(FileNaim); // загружаем в excel файл с рабочей книгой Action action1 = () => { bt_selct_excel.Enabled = false; }; Invoke(action1); excel.Sheets excelsheets; // объявление переменных хранящих листы книги excel.Worksheet excelworksheet; excelsheets = ExcelApp.Worksheets; excelworksheet = (excel.Worksheet)excelsheets.get_Item("Титул"); // обращение к листу по названию string Open1Sheet = excelworksheet.Cells[11, 3].Text; // обращение к ячейкам книги for (int i = 20; i <= 50; i++) { string ST = excelworksheet.Cells[i, 13].Text; if (ST.IndexOf("стандарт") > 0) { string Open2Sheet = excelworksheet.Cells[i, 18].Text; PL.Standart = Open2Sheet.Trim(); if (PL.Standart != null && PL.Standart != "") { Action Progress = () => { RTB_ExcelLog.AppendText("Стандарт профиля загружен\n", Color.Green); }; Invoke(Progress); } else { Action Progress = () => { RTB_ExcelLog.AppendText("Стандарт профиля не найден!\n", Color.Red); }; Invoke(Progress); } } string YR = excelworksheet.Cells[i, 13].Text; if (YR.IndexOf("подготовки") > 0) { string Open2Sheet = excelworksheet.Cells[i, 18].Text; PL.Year = Open2Sheet.Trim(); if (PL.Year == "") { string repeat = excelworksheet.Cells[i, 20].Text; PL.Year = repeat; PL.Year = repeat.Trim(); } if (PL.Year != null && PL.Year != "") { Action Progress = () => { RTB_ExcelLog.AppendText("Год профиля загружен\n", Color.Green); }; Invoke(Progress); } else { Action Progress = () => { RTB_ExcelLog.AppendText("Год профиля не найден!\n", Color.Red); }; Invoke(Progress); } } } PL.CreateList(); NS = 3; int Flag = 1; for (int i = 1; i <= 5; i++) { string STR = excelworksheet.Cells[11, i].Text; if (STR.IndexOf("Направленность") > 0) { NS = i; Flag = 0; break; } } if (Flag == 0) { Open1Sheet = excelworksheet.Cells[11, NS].Text; } else { for (int i = 1; i <= 5; i++) { string STR = excelworksheet.Cells[18, i].Text; if (STR.IndexOf("Направленность") > 0) { NS = i; Flag = 0; break; } } if (Flag == 0) { Open1Sheet = excelworksheet.Cells[18, NS].Text; } } if (Flag == 0) { int i1 = Open1Sheet.IndexOf("Направленность"); string STRNapr = Open1Sheet.Substring(22, i1 - 24); int i2 = Open1Sheet.IndexOf("\""); i1 = Open1Sheet.LastIndexOf("\""); string STRProf = Open1Sheet.Substring(i2 + 1, i1 - i2 - 1); ExcelApp.Visible = false; PL.Napr = STRNapr.Trim(); if (PL.Napr != null && PL.Napr != "") { Action Progress = () => { RTB_ExcelLog.AppendText("Направление профиля загружено\n", Color.Green); }; Invoke(Progress); } else { Action Progress = () => { RTB_ExcelLog.AppendText("Направление профиля не найдено!\n", Color.Red); }; Invoke(Progress); } PL.Profile = STRProf.Trim(); if (PL.Profile != null && PL.Profile != "") { Action Progress = () => { RTB_ExcelLog.AppendText("Профиль загружен\n", Color.Green); }; Invoke(Progress); } else { Action Progress = () => { RTB_ExcelLog.AppendText("Профиль не найден!\n", Color.Red); }; Invoke(Progress); } BD.Connect(); //проверка на дюблирование BD.command.CommandText = "SELECT Count([Профиль]![Код]) AS Выражение1 FROM Профиль WHERE (((Профиль.Название_профиля)='" + PL.Profile + "') AND ((Профиль.Год_профиля)='" + PL.Year + "'));"; // int ertert = BD.command.ExecuteNonQuery(); var prof_double = Convert.ToInt32(BD.command.ExecuteScalar()); if (prof_double != 0) { Action Progress = () => { MessageBox.Show("Выбранный вами профиль: " + PL.Profile + " " + PL.Year + " уже существует в базе данных, вернитесь в главное окно чтобы удалить и перезаписать данный профиль", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); }; Invoke(Progress); return; } } int J; // переменная номера столбца int SN = 1; // переменная номера ячейки со словом "Виды" int FlagVids = 1; // переменная признак нахождения "Виды деятельности" for (J = 2; J <= 3; J++) { for (int i = 15; i <= 40; i++) { string STR = excelworksheet.Cells[i, J].Text; if (STR.IndexOf("Виды") >= 0) { SN = i; FlagVids = 0; Action Progress = () => { RTB_ExcelLog.AppendText("Виды деятельности загружены\n", Color.Green); }; Invoke(Progress); break; } } if (FlagVids == 0) { break; } } if (FlagVids == 0) { for (int i = SN + 1; i <= SN + 10; i++) { string STR = excelworksheet.Cells[i, J].Text; string STR1 = excelworksheet.Cells[i, J - 1].Text; if (STR1.IndexOf("+") >= 0) { PL.MyList(STR.Trim()); } } } /* Считывания информации с листа "Компетенции" */ excelworksheet = (excel.Worksheet)excelsheets.get_Item("Компетенции"); for (int a = 3; a <= 400; a++) { if (excelworksheet.Cells[a, 2].Text != "") { string Compet = excelworksheet.Cells[a, 2].Text; string Info = excelworksheet.Cells[a, 4].Text; PL._OriginalCompet(Compet.Trim()); PL._InfoCompet(Info.Trim()); } } if (PL.OriginalCompet.Count != 0) { Action Progress = () => { RTB_ExcelLog.AppendText("Информация о компетенциях загружена\n", Color.Green); }; Invoke(Progress); } else { Action Progress = () => { RTB_ExcelLog.AppendText("Информация о компетенциях не найдена!\n", Color.Red); }; Invoke(Progress); } /* Считывания информации с листа "План" */ excelworksheet = (excel.Worksheet)excelsheets.get_Item("План"); string PlanSheet1 = excelworksheet.Cells[6, 3].Text; // обращение к ячейкам книги "Список дисциплин" int ND = 0; PL.DistCount = 0; ///////////////////////////////////////////////////////////////////// for (int d = 6; d <= 150; d++) { string stroch = excelworksheet.Cells[d, 1].Text; // j - строчка ; i - столбец if (excelworksheet.Cells[d, 3].Font.Bold != true && stroch.IndexOf("+") >= 0 || excelworksheet.Cells[d, 3].Font.Bold != true && stroch.IndexOf("-") >= 0) { PL.DistCount++; // количество дисциплин } } //////////////////////////////////////////////////////////////// for (int j = 6; j <= 150; j++) { string STR1 = excelworksheet.Cells[j, 1].Text; // j - строчка ; i - столбец if (excelworksheet.Cells[j, 3].Font.Bold != true && STR1.IndexOf("+") >= 0 || excelworksheet.Cells[j, 3].Font.Bold != true && STR1.IndexOf("-") >= 0) { PLtime[ND].initStruct(); // объявление массива for (int i = 4; i <= 175; i++) { string STR = excelworksheet.Cells[j, 3].Text; string _index = excelworksheet.Cells[j, 2].Text; PLtime[ND].Naim = STR; // наименование PLtime[ND].Index = _index; // индекс дисциплины string PlanSheet2 = excelworksheet.Cells[3, i].Text; // читаем название шапки PlanSheet2 = PlanSheet2.Replace(" ", ""); PlanSheet2 = PlanSheet2.Replace(".", ""); // удаляем все пробелы PlanSheet2 = PlanSheet2.ToLower(); // переводим в нижний регистор int Sem; switch (PlanSheet2) // запись в структуру "Форма контроля" { case "экзамен": if (excelworksheet.Cells[j, i].Text != "") { Sem = Int32.Parse(excelworksheet.Cells[j, i].Text); if (Sem > 9) { string CheckSem = Sem.ToString(); char[] NumSem = new char[CheckSem.Length]; for (int z = 0; z < CheckSem.Length; z++) { NumSem[z] = CheckSem[z]; string _CheckSem = NumSem[z].ToString(); int N = Int32.Parse(_CheckSem); PLtime[ND]._Examen(N); } } else { PLtime[ND]._Examen(Sem); } } break; case "зачет": if (excelworksheet.Cells[j, i].Text != "") { Sem = Int32.Parse(excelworksheet.Cells[j, i].Text); if (Sem > 9) { string CheckSem = Sem.ToString(); char[] NumSem = new char[CheckSem.Length]; for (int z = 0; z < CheckSem.Length; z++) { NumSem[z] = CheckSem[z]; string _CheckSem = NumSem[z].ToString(); int N = Int32.Parse(_CheckSem); PLtime[ND]._Zachet(N); } } else { PLtime[ND]._Zachet(Sem); } } break; case "зачетсоц": if (excelworksheet.Cells[j, i].Text != "") { Sem = Int32.Parse(excelworksheet.Cells[j, i].Text); if (Sem > 9) { string CheckSem = Sem.ToString(); char[] NumSem = new char[CheckSem.Length]; for (int z = 0; z < CheckSem.Length; z++) { NumSem[z] = CheckSem[z]; string _CheckSem = NumSem[z].ToString(); int N = Int32.Parse(_CheckSem); PLtime[ND]._Dif_Zachet(N); } } else { PLtime[ND]._Dif_Zachet(Sem); } } break; case "кр": if (excelworksheet.Cells[j, i].Text != "") { Sem = Int32.Parse(excelworksheet.Cells[j, i].Text); if (Sem > 9) { string CheckSem = Sem.ToString(); char[] NumSem = new char[CheckSem.Length]; for (int z = 0; z < CheckSem.Length; z++) { NumSem[z] = CheckSem[z]; string _CheckSem = NumSem[z].ToString(); int N = Int32.Parse(_CheckSem); PLtime[ND].KR = Sem; } } else { PLtime[ND].KR = Sem; } } break; } switch (PlanSheet2) // запись "Итого часов" { case "факт": if (excelworksheet.Cells[j, i].Text != "") { PLtime[ND].Fact = Int32.Parse(excelworksheet.Cells[j, i].Text); } break; case "поплану": if (excelworksheet.Cells[j, i].Text != "") { PLtime[ND].AtPlan = Int32.Parse(excelworksheet.Cells[j, i].Text); } break; case "ср": if (excelworksheet.Cells[j, i].Text != "" && PLtime[ND].SR == 0) { PLtime[ND].SR = Int32.Parse(excelworksheet.Cells[j, i].Text); } break; case "ик": if (excelworksheet.Cells[j, i].Text != "") { PLtime[ND].IK = Int32.Parse(excelworksheet.Cells[j, i].Text); } break; case "катт": if (excelworksheet.Cells[j, i].Text != "") { PLtime[ND].KaTT = Int32.Parse(excelworksheet.Cells[j, i].Text); } break; case "кэ": if (excelworksheet.Cells[j, i].Text != "") { PLtime[ND].KE = Int32.Parse(excelworksheet.Cells[j, i].Text); } break; case "каттэкз": if (excelworksheet.Cells[j, i].Text != "") { PLtime[ND].KattEx = Int32.Parse(excelworksheet.Cells[j, i].Text); } break; case "контактчасы": if (excelworksheet.Cells[j, i].Text != "") { PLtime[ND].ContactHours = Int32.Parse(excelworksheet.Cells[j, i].Text); } break; case "ауд": if (excelworksheet.Cells[j, i].Text != "") { PLtime[ND].Aud = Int32.Parse(excelworksheet.Cells[j, i].Text); } break; case "контроль": if (excelworksheet.Cells[j, i].Text != "") { PLtime[ND].Contr = Int32.Parse(excelworksheet.Cells[j, i].Text); } break; case "интерчасы": if (excelworksheet.Cells[j, i].Text != "") { PLtime[ND].InterHours = Int32.Parse(excelworksheet.Cells[j, i].Text); } break; } string NomerSemestra = excelworksheet.Cells[2, i].Text; NomerSemestra.Trim(); if (NomerSemestra.IndexOf("Сем") >= 0) { string LastSymbol = NomerSemestra.Substring(NomerSemestra.Length - 1); // номер семестра в шапке PL.LS = Int32.Parse(LastSymbol); } if (PL.LS > 0) { switch (PlanSheet2) { case "зет": case "зе": if (excelworksheet.Cells[j, i].Text != "") { int Kek = Int32.Parse(excelworksheet.Cells[j, i].Text); PLtime[ND]._ZET(PL.LS, Kek); } break; case "итого": if (excelworksheet.Cells[j, i].Text != "") { int Kek = Int32.Parse(excelworksheet.Cells[j, i].Text); PLtime[ND]._Itogo(PL.LS, Kek); } break; case "лек": if (excelworksheet.Cells[j, i].Text != "") { int Kek = Int32.Parse(excelworksheet.Cells[j, i].Text); PLtime[ND]._Lekc(PL.LS, Kek); } break; case "лекинтер": if (excelworksheet.Cells[j, i].Text != "") { int Kek = Int32.Parse(excelworksheet.Cells[j, i].Text); PLtime[ND]._LekcInter(PL.LS, Kek); } break; case "лаб": if (excelworksheet.Cells[j, i].Text != "") { int Kek = Int32.Parse(excelworksheet.Cells[j, i].Text); PLtime[ND]._Lab(PL.LS, Kek); } break; case "лабинтер": if (excelworksheet.Cells[j, i].Text != "") { int Kek = Int32.Parse(excelworksheet.Cells[j, i].Text); PLtime[ND]._LabInter(PL.LS, Kek); } break; case "пр": if (excelworksheet.Cells[j, i].Text != "") { int Kek = Int32.Parse(excelworksheet.Cells[j, i].Text); PLtime[ND]._Practice(PL.LS, Kek); } break; case "принтер": if (excelworksheet.Cells[j, i].Text != "") { int Kek = Int32.Parse(excelworksheet.Cells[j, i].Text); PLtime[ND]._PractInter(PL.LS, Kek); } break; case "элект": if (excelworksheet.Cells[j, i].Text != "") { int Kek = Int32.Parse(excelworksheet.Cells[j, i].Text); PLtime[ND]._Elect(PL.LS, Kek); } break; case "элек": if (excelworksheet.Cells[j, i].Text != "") { int Kek = Int32.Parse(excelworksheet.Cells[j, i].Text); PLtime[ND]._Elect(PL.LS, Kek); } break; case "ср": if (excelworksheet.Cells[j, i].Text != "") { int Kek = Int32.Parse(excelworksheet.Cells[j, i].Text); PLtime[ND]._SR1(PL.LS, Kek); } break; case "ик": if (excelworksheet.Cells[j, i].Text != "") { int Kek = Int32.Parse(excelworksheet.Cells[j, i].Text); PLtime[ND]._ik(PL.LS, Kek); } break; case "катт": if (excelworksheet.Cells[j, i].Text != "") { int Kek = Int32.Parse(excelworksheet.Cells[j, i].Text); PLtime[ND]._katt(PL.LS, Kek); } break; case "каттэкз": if (excelworksheet.Cells[j, i].Text != "") { int Kek = Int32.Parse(excelworksheet.Cells[j, i].Text); PLtime[ND]._kattex(PL.LS, Kek); } break; case "кэ": if (excelworksheet.Cells[j, i].Text != "") { int Kek = Int32.Parse(excelworksheet.Cells[j, i].Text); PLtime[ND]._ke(PL.LS, Kek); } break; case "часыконт": case "контроль": if (excelworksheet.Cells[j, i].Text != "") { int Kek = Int32.Parse(excelworksheet.Cells[j, i].Text); PLtime[ND]._HoursCont(PL.LS, Kek); } break; case "часыконтэлектр": case "контрэлектр": if (excelworksheet.Cells[j, i].Text != "") { int Kek = Int32.Parse(excelworksheet.Cells[j, i].Text); PLtime[ND]._HoursContElect(PL.LS, Kek); } break; } } if (PlanSheet2.IndexOf("компетенции") >= 0) // Код компетенции { string Compet = excelworksheet.Cells[j, i].Text; string[] DivComp = Compet.Split(new char[] { ' ', ';' }, StringSplitOptions.RemoveEmptyEntries); foreach (string s in DivComp) { PLtime[ND].AddCompet(s); } } if (PlanSheet2.LastIndexOf("наименование") >= 0) // Кафедра { string KF = excelworksheet.Cells[j, i].Text; PLtime[ND].Kafedra = KF; } } // Процесс загрузки if (PL.DistCount > 0) { Action Progress = () => { RTB_ExcelLog.AppendText("Загрузка дисциплин прогресс " + PLtime[ND].Naim.ToString() + " загружено\n", Color.Green); }; Invoke(Progress); } /* Обработка возможных ошибок*/ if (PLtime[ND].Naim == "") { Action Progress = () => { RTB_ExcelLog.AppendText("Наименование дисциплины не найдено!\n", Color.Red); }; Invoke(Progress); } if (PLtime[ND].Index == "") { Action Progress = () => { RTB_ExcelLog.AppendText("Индекс не найден!\n", Color.Red); }; Invoke(Progress); } if (PLtime[ND].Compet.Count == 0) { Action Progress = () => { RTB_ExcelLog.AppendText("Компетенции не найдены!\n", Color.Red); }; Invoke(Progress); } if (PLtime[ND].Kafedra == "") { Action Progress = () => { RTB_ExcelLog.AppendText("Кафедра не найдена!\n", Color.Red); }; Invoke(Progress); } PLtime[ND]._InterHousInSem(); // счетчик дисциплин ND++; PL.LS = 0; } Action action2 = () => { PB_Excel.Maximum = PL.DistCount; PB_Excel.Value = ND; }; Invoke(action2); } // Если дисциплины не найдены, появляется информация об ошибке if (PL.DistCount == 0) { Action Progress = () => { RTB_ExcelLog.AppendText("Дисциплины не найдены!\n", Color.Red); }; Invoke(Progress); } StartEndDist(); // определения начало и конца дисцип BeforeAndAfterDis(); // анализ дисц ПОСЛЕ и ДО PL.DistCount = 0; CloseProcess(); /* Заполнение инфррмации в БАЗУ ДАННЫХ */ Action AddBD = () => { RTB_ExcelLog.AppendText("Заполняем Базу Данных \n", Color.Blue); }; Invoke(AddBD); OleDbConnection con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;" + @"Data Source=" + Application.StartupPath + "/baza_dan_proekt_kh.accdb"); OleDbCommand command = new OleDbCommand("INSERT INTO Направление_подготовки (Индекс, Название, Станд) VALUES ('" + PL.Profile + "','" + PL.Napr + "','" + PL.Standart + "');", con); con.Open(); OleDbDataReader reader; // запись в таблицу профиль command.CommandText = "INSERT INTO Профиль (Название_профиля,Год_профиля) VALUES ('" + PL.Profile + "','" + PL.Year + "');"; reader = command.ExecuteReader(); reader.Close(); // берем ID из профиля command.CommandText = "SELECT Профиль.Код FROM Профиль WHERE (((Профиль.[Название_профиля])='" + PL.Profile + "')); "; var code_profile = command.ExecuteScalar(); reader.Close(); command.CommandText = "INSERT INTO Направление_подготовки (Код_профиля, Направление_подготовки, Станд) VALUES ('" + code_profile + "','" + PL.Napr + "','" + PL.Standart + "');"; reader = command.ExecuteReader(); reader.Close(); // получаем id из Направление_подготовки для записи в Дисциплины_профиля command.CommandText = "SELECT Направление_подготовки.Код FROM Направление_подготовки WHERE (((Направление_подготовки.[Направление_подготовки])='" + PL.Napr + "') AND ((Направление_подготовки.[Код_профиля])=" + code_profile + ") AND ((Направление_подготовки.[Станд])='" + PL.Standart + "')); "; var code = command.ExecuteScalar(); reader.Close(); //компетенции с листа компетенции for (int y = 0; y <= PL.OriginalCompet.Count - 1; y++) { command.CommandText = "INSERT INTO Компетенции (Код_направления,Содержание,Компетенция) VALUES ('" + code + "','" + PL.InfoCompet[y] + "','" + PL.OriginalCompet[y] + "');"; reader = command.ExecuteReader(); reader.Close(); } for (int i = 0; i <= PLtime.Length - 1; i++) { if (PLtime[i].Naim != null) { command.CommandText = "INSERT INTO Дисциплины_профиля (Код_направления_подготовки,Дисциплины,Индекс,Факт_по_зет,По_плану,Контакт_часы,Аудиторные,Самостоятельная_работа,Контроль,Элект_часы,Интер_часы,Код_профиля,Закрепленная_кафедра,ИК,КаТТ,КЭ,Каттэкз) VALUES ('" + code + "','" + PLtime[i].Naim + "','" + PLtime[i].Index + "','" + PLtime[i].Fact + "','" + PLtime[i].AtPlan + "','" + PLtime[i].ContactHours + "','" + PLtime[i].Aud + "','" + PLtime[i].SR + "','" + PLtime[i].Contr + "','" + PLtime[i].ElectHours + "','" + PLtime[i].InterHours + "'," + code_profile + ",'" + PLtime[i].Kafedra + "'," + PLtime[i].IK + "," + PLtime[i].KaTT + "," + PLtime[i].KE + "," + PLtime[i].KattEx + ");"; reader = command.ExecuteReader(); reader.Close(); //получаем ID дисциплины которую записали command.CommandText = "SELECT Дисциплины_профиля.Код FROM Дисциплины_профиля WHERE (((Дисциплины_профиля.Код_направления_подготовки)=" + code + ") AND ((Дисциплины_профиля.Дисциплины)='" + PLtime[i].Naim + "'));"; var code_distip = command.ExecuteScalar(); reader.Close(); // подготовка к записи в таблицу компетенции_дисциплины for (int y = 0; y <= PLtime[i].Compet.Count - 1; y++) { //берем ID из таблицы компетенции для помещения в таблицу компетенции_дисциплины command.CommandText = "SELECT Компетенции.Код, Компетенции.Компетенция FROM Компетенции WHERE (((Компетенции.Компетенция)='" + PLtime[i].Compet[y] + "')); "; var code_komped = command.ExecuteScalar(); reader.Close(); command.CommandText = "INSERT INTO Компетенции_дисциплины (Код_компетенции,Код_дисциплины) VALUES (" + code_komped + "," + code_distip + ");"; reader = command.ExecuteReader(); reader.Close(); } //дисциплины до for (int y1 = 0; y1 <= PLtime[i].PreDis.Count - 1; y1++) { // command.CommandText = "INSERT INTO Дисциплина_до (Код_дисциплины,Дисциплина_до) VALUES ('" + code_distip + "','" + PLtime[i].PreDis[y1] + "');"; reader = command.ExecuteReader(); reader.Close(); } //дисциплины после for (int y2 = 0; y2 <= PLtime[i].AfterDis.Count - 1; y2++) { // command.CommandText = "INSERT INTO Дисциплина_после (Код_дисциплины,Дисциплина_после) VALUES ('" + code_distip + "','" + PLtime[i].AfterDis[y2] + "');"; reader = command.ExecuteReader(); reader.Close(); } int t; // прохождение по симестрам for (t = 0; t <= 9; t++) { if (PLtime[i].Dif_Zachet[t] == true || PLtime[i].Zachet[t] == true || PLtime[i].Examen[t] == true) { int nomer_sem = t + 1; command.CommandText = "INSERT INTO Семестр (Номер_семестра,ZET,Лек,Лек_инт,ПР,Лаб,Лаб_инт,ПР_инт,Элек,СР,Часы_конт,Часы_конт_электр,Курсовая,Итого,Код_дисциплины,Экзамен,Зачет,Зачет_с_оценкой,ИК,КаТТ,Каттэкз,КЭ) VALUES ('" + nomer_sem + "','" + PLtime[i].ZET[t] + "','" + PLtime[i].Lekc[t] + "','" + PLtime[i].LekcInter[t] + "','" + PLtime[i].Practice[t] + "','" + PLtime[i].Lab[t] + "','" + PLtime[i].LabInter[t] + "','" + PLtime[i].PractInter[t] + "','" + PLtime[i].Elect[t] + "','" + PLtime[i]._SR[t] + "','" + PLtime[i].HoursCont[t] + "','" + PLtime[i].HoursContElect[t] + "','" + PLtime[i].KR + "','" + PLtime[i].Itogo[t] + "','" + code_distip + "'," + PLtime[i].Examen[t] + "," + PLtime[i].Zachet[t] + "," + PLtime[i].Dif_Zachet[t] + "," + PLtime[i].ik[t] + "," + PLtime[i].katt[t] + "," + PLtime[i].kattex[t] + "," + PLtime[i].ke[t] + ");"; reader = command.ExecuteReader(); reader.Close(); } } } } for (int i = 0; i <= PL.VidActive.Count - 1; i++) { command.CommandText = "INSERT INTO Виды_дейтельности (Список_дейтельности,Код_направления_подготовки) VALUES ('" + PL.VidActive[i] + "','" + code + "');"; reader = command.ExecuteReader(); reader.Close(); } Action CompleteBD = () => { RTB_ExcelLog.AppendText("Информация в Базу Данных загружена \n", Color.Green); }; Invoke(CompleteBD); Action BT = () => { bt_selct_excel.Enabled = true; }; Invoke(BT); DataBase(); }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// private void AddUrl() { if (!TmpURL.Any()) { return; } List <PostURLs> posts = TmpURL; Sem.WaitOne(); using (StreamWriter sw = new StreamWriter(pathLog, true, System.Text.Encoding.Default)) { sw.WriteLine("[" + DateTime.Now.ToString() + "] Началась работа метода записи ссылок в БД."); } Sem.Release(); Models.MyDBEntities1 db = new Models.MyDBEntities1(); List <Models.TableUrl> table = (from t in db.TableUrl select t).ToList(); int count = db.TableUrl.Count(); for (int i = 0; i < count; i++) { Models.TableUrl tableItem = (from t in db.TableUrl select t).First(); db.TableUrl.Remove(tableItem); db.SaveChanges(); } Sem.WaitOne(); using (StreamWriter sw = new StreamWriter(pathLog, true, System.Text.Encoding.Default)) { sw.WriteLine("[" + DateTime.Now.ToString() + "] Очистка ссылок в БД выполнена."); } Sem.Release(); int id = 0; foreach (PostURLs item in posts) { List <string> urls = item.TextURLs.ToList(); foreach (string u in urls) { if (!u.Equals("")) { Models.TableUrl t1 = new Models.TableUrl() { Url = u, Post_Id = item.ID, Id = id }; db.TableUrl.Add(t1); id++; db.SaveChanges(); } } } db.Dispose(); Sem.WaitOne(); using (StreamWriter sw = new StreamWriter(pathLog, true, System.Text.Encoding.Default)) { sw.WriteLine("[" + DateTime.Now.ToString() + "] Метод закончил загружать ссылки в БД."); } Sem.Release(); }