Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Jinfaa
1 / 1 / 0
Регистрация: 05.05.2010
Сообщений: 118
1

Deadlocked ошибка. При работе с потоками

23.11.2011, 11:50. Просмотров 728. Ответов 4
Метки нет (Все метки)

Здравствуйте! Возникла такая ошибка. В работе.

Transaction (Process ID 536) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.

Код выглядит так.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
       
public static void AddI(Pr curprd)
        {
            PDataContext runThreadPar = new PDataContext();
 
            var matchedID = runThreadPar.Pr.Where(x => x.name == curprd.name).Select(j => j).SingleOrDefault();
            Table<Pr> dImage = Accessor.GetPTable();
 
            
            string search = matchedID.name;
 
            string url = "http://.ru" + search;
           
            string html = string.Empty;
            
            string pattern = "alt=\"\"/>";
            
            StringBuilder pars = new StringBuilder();
 
            ServicePointManager.DefaultConnectionLimit = 200;
 
            HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
            HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
            StreamReader myStreamReader = new StreamReader(myHttpWebResponse.GetResponseStream(), Encoding.GetEncoding(1251));
 
            html = myStreamReader.ReadToEnd();
 
            Regex match = new Regex(pattern, RegexOptions.IgnoreCase);
 
            Match collect_math = match.Match(html);
            if (collect_math != null)
            {
                pars.Append(Convert.ToString(collect_math));
                matchedID.imageurl = pars.ToString();
                runThreadPar.SubmitChanges();
            }
 
            myHttpWebResponse.Close();
            myStreamReader.Close();
}
ошибка в последних строчках. Если я не закрываю то на фигурной скобки.

вызов
C#
1
2
3
4
5
6
var curadd = dc.Pr.Select(n => n);
 
                    System.Threading.Tasks.Parallel.ForEach(curadd, (currentRun, loopstate) =>
                    {
                        Accessor.AddI(currentRun);
                    });
Спасибо!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2011, 11:50
Ответы с готовыми решениями:

Ошибка при работе с потоками. WTF?!?
Здравствуйте. Вообщем есть форма. На ней есть несколько текстбоксов для ввода данных, пару лейблов...

Ошибка при построении запроса к БД при работе с dateTimePicker
Выдает ошибку при построении запроса в аксессе 2003. Раньше не работал с dateTimePicker и поэтому...

Ошибка при работе с делегатами
Есть делегат и события public delegate void DbQueryEventHandler(object sender,...

Ошибка при работе с файлами
Вечер добрый! Есть код: string test; StreamReader rr =...

Ошибка при работе с флешкой
Возникла проблема работы с флешкой. Сохраняю на неё проект, запускаю на другом компьютере, выдаётся...

4
kolorotur
Эксперт .NET
11106 / 9051 / 2282
Регистрация: 17.09.2011
Сообщений: 15,583
Завершенные тесты: 1
24.11.2011, 23:31 2
Попробуйте поменять Parallel.ForEach на обычный foreach и посмотрите, будет ли в базе возникать дедлок.
Подозреваю, что проблема в этом.
1
Jinfaa
1 / 1 / 0
Регистрация: 05.05.2010
Сообщений: 118
25.11.2011, 04:44  [ТС] 3
Цитата Сообщение от kolorotur Посмотреть сообщение
Попробуйте поменять Parallel.ForEach на обычный foreach и посмотрите, будет ли в базе возникать дедлок.
Подозреваю, что проблема в этом.
Ошибки нет. Но хотелось бы чтобы работало в несколько потоков.
0
kolorotur
Эксперт .NET
11106 / 9051 / 2282
Регистрация: 17.09.2011
Сообщений: 15,583
Завершенные тесты: 1
25.11.2011, 13:31 4
В таблице, куда добавляются данные, имеются какие-нибудь триггеры?
1
Jinfaa
1 / 1 / 0
Регистрация: 05.05.2010
Сообщений: 118
26.11.2011, 12:32  [ТС] 5
Цитата Сообщение от kolorotur Посмотреть сообщение
В таблице, куда добавляются данные, имеются какие-нибудь триггеры?
Здравствуйте! Нет. Обычные поля, не триггеров ничего.

Добавлено через 17 часов 3 минуты
Есть парсер из экселя вы мне с ним помогали. Там без локов. И там нету дидлоков хотя и процедура там добавления. А тут обновления. Не пойму..
0
26.11.2011, 12:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.11.2011, 12:32

Ошибка при работе с реестром
Всем привет. Сегодня у меня вдруг появилась ошибка: Код: RegistryKey c =...

Ошибка при работе с БД SQL
Всем здравствуйте. Есть: 1)SQL server 2005(с базой) 2)MVS 2010 Создал простейшее...

Ошибка при работе с excel
Нужно прочитать значение из ячейки. Например 1,1 (A1). Возникает ошибка --------------...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru