Эксперт С++
516 / 421 / 92
Регистрация: 23.09.2010
Сообщений: 1,165

Timer + IO

05.03.2013, 16:29. Показов 1253. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть такой код, который падает с эксепшеном:
Исключение типа "System.IO.FileNotFoundException" возникло в mscorlib.ni.dll и не было обработано до границы управляемого и машинного кода
Первый этап обработки исключения типа "System.UnauthorizedAccessException" в System.Windows.ni.dll
Исключение типа "System.UnauthorizedAccessException" возникло в System.Windows.ni.dll и не было обработано до границы управляемого и машинного кода
Что не так? Падает, когда я использую таймер или поток. Без них работает.

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
        
async void ThreadFunc(object obj)
{
    int ind = (int)obj;
 
    var frame = await LoadFrameAsync(ind);
 
}
 
private async void LoadFrame(int ind)
{
    timer = new Timer(ThreadFunc, (object)ind, 10, System.Threading.Timeout.Infinite);
}
 
private static async Task<FrameData> LoadFrameAsync(int index)
{
    try
    {                
        int wm, hm;
        byte[] bytesm = await GetImageBytesAsync("Media/frame" + (index).ToString() + "_mask.jpg");
        byte[] datam = GetImageData(bytesm, out wm, out hm);
 
        int w, h;
        byte[] bytesf = await GetImageBytesAsync("Media/frame" + (index).ToString() + ".jpg");
        byte[] dataf = GetImageData(bytesf, out w, out h);
 
        return new FrameData { frameData = dataf, maskData = datam }; 
    }
    catch (Exception e)
    {
        Debugger.Log(1, "", e.Message);
        return null;
    }                          
}
 
public static async Task<byte[]> GetImageBytesAsync(string path)
{
    byte[] data = null;
 
    var uri = new Uri("ms-appx:///"+path);
    var file = await StorageFile.GetFileFromApplicationUriAsync(uri);
 
    using (var stream = await file.OpenStreamForReadAsync())
    {
        using (BinaryReader br = new BinaryReader(stream))
        {
            data = br.ReadBytes((int)stream.Length);
 
            return data;
        }
    }
}
 
public static byte[] GetImageData(byte[] imageBytes, out int width, out int height)
{
    
    using (MemoryStream stream = new MemoryStream(imageBytes))
    {                
        WriteableBitmap bmp = PictureDecoder.DecodeJpeg(stream);
 
        width = bmp.PixelWidth;
        height = bmp.PixelHeight;
        var pixels = bmp.Pixels;
        var bytes = new byte[pixels.Length * 4];
        Buffer.BlockCopy(pixels, 0, bytes, 0, bytes.Length);
                        
        return bytes;
    }
}
 
    catch (Exception e)
    {
        Debugger.Log(1, "", e.Message);
        return null;
    }                          
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.03.2013, 16:29
Ответы с готовыми решениями:

Timer
Народ, подскажите пожалуйста как с использованием таймера сделать так, чтобы при нажатии на кнопку ее функция выполнялась с задержкой на 7...

c# Timer и другое
Есть приложение, в котором 100 тыс миллионов кнопок. Практически каждая кнопка выполняет функцию загрузки какого-либо приложения: ...

Threads + Timer
у меня стоит задача выполнять какие-то действия в нескольких потока с какой-то периодичностью весь код я свел просто к модели дабы не...

6
 Аватар для Spectral-Owl
608 / 583 / 157
Регистрация: 29.06.2010
Сообщений: 1,620
05.03.2013, 17:03
Цитата Сообщение от gooseim Посмотреть сообщение
Исключение типа "System.IO.FileNotFoundException"
если при спользовании чего-то там возникает это исключение, а без использования - не возникает, то я вижу только одну причину, это что-то (таймер или поток) умудрилось поменять текущее... "местрасположение?" что-ли...
в общем начинает искать папки и файлы не рядом с екзешником, а, к примеру, в "C:\Windows\"
Мой совет - использовать вместо локальных путей "Media/frame"+... глобальные, отталкиваясь от месторасположения exe файла. для консоли
C#
1
AppDomain.CurrentDomain.BaseDirectory
1
Эксперт С++
516 / 421 / 92
Регистрация: 23.09.2010
Сообщений: 1,165
05.03.2013, 17:09  [ТС]
Spectral-Owl, не знаете, как это будет выглядеть для Windows Phone 8?
Такая запись
AppDomain.CurrentDomain.BaseDirectory
не подходит, т.к. нет свойства BaseDirectory.
0
 Аватар для Spectral-Owl
608 / 583 / 157
Регистрация: 29.06.2010
Сообщений: 1,620
05.03.2013, 17:24
хм... если честно я даже не уверен что для Window Phone 8 мой совет актуален, корни проблемы (которую привзан решить мой совет) растут из DOS-а, и даже в семёрке сохранились только при использовании архаизма в виде командной строки...
0
Эксперт С++
516 / 421 / 92
Регистрация: 23.09.2010
Сообщений: 1,165
05.03.2013, 17:26  [ТС]
Я посмотрел так:
C#
1
2
var file = await StorageFile.GetFileFromApplicationUriAsync(uri);
Debugger.Log(1, "Path", file.Path);
Дебаггер возвращает правильный путь, вроде бы, падает уже после.
Может, ограничение доступа?
0
 Аватар для Spectral-Owl
608 / 583 / 157
Регистрация: 29.06.2010
Сообщений: 1,620
05.03.2013, 17:38
хы, и правда... чего у тебя получилось 2 разных исключения? читая текст ексепшена создаётся двойственное ощущение:
"простите, возникло 'System.IO.FileNotFoundException', а не обработано 'System.UnauthorizedAccessException'..." .

Хотел посоветовать запустить приложение от имени администратора, но хз есть ли оно под WinPhone 8
0
Эксперт С++
516 / 421 / 92
Регистрация: 23.09.2010
Сообщений: 1,165
05.03.2013, 17:41  [ТС]
Под админом нельзя запустить.

Добавлено через 1 минуту
Два разных исключения как я понимаю, при одном и том же коде, который вызывается 2 раза. Исключение ловится в catch и выводится.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.03.2013, 17:41
Помогаю со студенческими работами здесь

Почему ругается на Timer
Всем доброе время. Подскажите пожалуйста, почему при инициализации Timer в теле. Ругается на Timer Объявляю та: ...

Потоки timer и textBox
имеется следующий код: private void timer1_Tick(object sender, EventArgs e) { Thread tLUPAB = new Thread(LUPAB); ...

Threading.Timer и ping сервера
Всем привет, Хочу задать сложный и глупый вопрос) никак не могу понять работу Threading.Timer. хотел с помощью него через каждые 30...

Thread Timer время жизни
Как задать время жизни tick, мне необходимо чтобы он прекращал работу по истечении установленного времени

не срабатывает Timer Callback, и не выполняются события
Добрый день! Решил написать схему переключения светофора, основанную на событиях. Заодно опробовал System.Threading.Timer. Получился вот...


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

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

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru