Странный код читалки, ИМХО проще сделать так: PHP: public string readCfg() { // if (!(File.Exists("sql.ini"))) return null; using (StreamReader reader = new StreamReader("sql.ini")) { return reader.ReadToEnd().Trim(); } }} Мне кажется проблема может быть в символах \r и/или \n в конце строки в файле, поэтому и не коннектится.
C# Застрял на ошибке в многопоточности. Суть: Code: class Demo { private string GetContent() { //код return content; } public string GetUrl { string content=GetContent(); //и вот здесь вылазит ошибка, только в потоке System.AggregateException //код return url; } } class Form1 : Form { //... private void button1_Click(object sender, EventArgs e) { try { Demo obDemo=new Demo(); //использую следующий вариант потому как нужно что бы задача //возвращала string Task<string> tsk1=Task<string>.Factory.StartNew(obUrl.GetUrl); richTextBox1.Text = tsk1.Result; //идём в класс который выше tsk1.Wait(); tsk1.Dispose(); } catch (IOException exc) { MessageBox.Show(exc); return; } } } Во общем я так понял что в методе который использует поток нельзя вызывать другой метод. Если так как я хочу не сделать, то подскажите как это всё побороть.
Короче то была ошибка не в самом организации потока, а именно в тех действиях которые происходили в этом потоке... но как то тупо что оно выдаёт ошибку AggregateException если например в моём случае в методе была ошибка URIException, это только затрудняет отладку.
PHP: string s = textBox1.Text; string v = s.Replace("[TEXT1]", "TEXT1"); string v = s.Replace("[TEXT2]", "TEXT2"); string v = s.Replace("[TEXT3]", "TEXT3"); string v = s.Replace("[TEXT4]", "TEXT4");; textBox2.Text = v; всем привет,как сделать так чтоб Replace выводилось на textBox2 тоесть на textBox1 пишу [TEXT3] а на textBox2 TEXT3 итд... зарания спасибо...
если я тебя правильно понял, то ошибка в том, что ты постоянно делаешь перепресвоение переменной. Хотя лучше сделать в цыкле меньше кода и более гибкое или че-нить другое придумать зависит от задачи)
Всё правильно вроде, только не надо каждый раз объявлять переменную, то есть писать нужно не "string v = s.Replace...", а просто "v = s.Replace..."
Code: string s = textBox1.Text; string v1 = s.Replace("[TEXT1]", "TEXT1"); string v2 = v1.Replace("[TEXT2]", "TEXT2"); v1 = v2.Replace("[TEXT3]", "TEXT3"); v2 = v1.Replace("[TEXT4]","TEXT4"); textBox2.Text = v2; так, что ли?:О
Replace это метод переменной. Code: string s = textBox1.Text; string v = s.Replace("[", ""); s = v.Replace("]",""); textBox2.Text = s; если не так, пиши в асю 5544433 помогу)
Честно говоря, я не понял, что ты хочешь сделать, но вроде так должно работать: PHP: string s = textBox1.Text; string v = s.Replace("[TEXT1]", "TEXT1"); v = v.Replace("[TEXT2]", "TEXT2"); v = v.Replace("[TEXT3]", "TEXT3"); v = v.Replace("[TEXT4]", "TEXT4");; textBox2.Text = v; Если в tb1 будет [TEXT1][TEXT2][TEXT3][TEXT4], то в tb2 TEXT1TEXT2TEXT3TEXT4
Воспользуйся, например, регулярками, чтобы не было 40 штук http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.replace%28v=vs.71%29.aspx Или заменяй только [, ], если текст состоит только из подобных конструкций
C# Простой пример из книги. Code: private void button1_Click(object sender, EventArgs e) { Task tsk = Task.Factory.StartNew(() => { for (int i = 0; i < 10; i++) { Thread.Sleep(500); label1.Text = Task.CurrentId.ToString() + " " i.ToString(); } } ); tsk.Wait(); //System.AggregateException tsk.Dispose(); label1.Text += " The end"; } Вопрос: Почему в ожидании выдает ошибку System.AggregateException;
return AggregateException - Представляет одну или несколько ошибок, происходящих во время выполнения приложения. В сведениях об исключении смотрим свойство InnerException - Недопустимая операция в нескольких потоках: попытка доступа к элементу управления 'label1' не из того потока, в котором он был создан. Что, в общем-то, очевидно.
X-rus спс, не знал что порожденные потоки не имеют доступа к элементам формы. Полистал гугл и нашел решения. Ну и ещё один нубовский вопрос: Почему когда создаю отдельный поток, и этот поток выполняет какие то действия на форме, то форма в этот момент зависает и неактивна? Мне казалось что использование потоков наоборот исправит этот дефект.
return Проблема в том, что ты ожидаешь завершение своего потока в главном потоке приложения, в результате форма блокируется - tsk.Wait(); Посмотри класс - BackgroundWorker. Хороший выбор для оконного приложения.
Никак не могу выбрать шаблон под среднего размера проекты на c# на wpf. Что посоветуете и желательно с сылкой на пример(подробный). По vmmv что-то не густо примеров...