Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
Эксперт С++
516 / 421 / 92
Регистрация: 23.09.2010
Сообщений: 1,165

Timer + IO

05.03.2013, 16:29. Показов 1228. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru