Задача класса в C # и разные результаты - PullRequest
0 голосов
/ 01 апреля 2012

Есть код, который читает файл и выполняет некоторые вычислительные операции с его содержимым в другом потоке, используя классы Task и StreamReader.

 Task t= new Task(() => DoSomeWork(myFile));
 t.Start();

Но несмотря на то, что файл неизменен, иногда я получаю разные результаты! Зачем? Что я должен сделать, чтобы решить это?

Ответы [ 2 ]

1 голос
/ 01 апреля 2012

У вас явно есть что-то внутри DoSomeWork (), которое не является поточно-ориентированным.Наиболее вероятным кандидатом на это является некоторый статический код, поскольку это будет означать, что в памяти есть только одна копия этого конкретного фрагмента кода.Один экземпляр DoSomeWork () мог бы отключить контекст, а другой экземпляр мог бы определить состояние статического метода, что дало бы вам некоторые непредсказуемые результаты.

Другие вещи могут включать в себя неправильное использование внедрения зависимости,разделяемый одноэлементный объект, некоторые библиотеки неправильно используются как асинхронные или пара других вещей - об этом говорил Дрю, когда просил дополнительную информацию.

0 голосов
/ 01 апреля 2012

Одна проблема, с которой я могу столкнуться, состоит в том, что при наличии нескольких совпадений слов, когда вы впервые сталкиваетесь с каждым новым словом, вы воссоздаете все значение GridView.Я бы порекомендовал создать GridView перед входом в цикл для обработки слов ... если не просто сделать GridView статичным в определении ListView's во время разработки.

Тем не менее, это скореепроблема с производительностью (постоянно сбрасывающая вид), чем проблема с данными.Если вы сможете опубликовать реализацию класса FileWordInfo view model, это может вызвать некоторые другие проблемы.

...