Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
33 / 33 / 18
Регистрация: 16.09.2015
Сообщений: 246

TargetInvocationException Процесс не может получить доступ к файлу 7z.dll

17.09.2015, 23:35. Показов 1809. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите мне разобраться что не так, пожалуйста. Вот я написал программу скачивания архива и распаковки его, но есть проблема, отладчик жалуется:
System.Reflection.TargetInvocationExcept ion не обработано
Message="Адресат вызова создал исключение."
Source="mscorlib"
Message="Процесс не может получить доступ к файлу \"E:\\Documents and Settings\\new\\Мои документы\\Visual Studio 2008\\Projects\\Launcher\\Launcher\\bin\ \Debug\\7z.dll\", так как этот файл используется другим процессом."

Но каким же другим процессом? не могу никак понять.

Форма1
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Threading;
using System.Diagnostics;
 
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
 
        System.Net.WebClient WebClient = new System.Net.WebClient();
        System.Diagnostics.Process proc = new System.Diagnostics.Process();
 
 
        public Form1()
        {
            InitializeComponent();
            Upd();
        }
 
        void Upd()
        {
            Uri Uri = new Uri("http://realism2015.ru/realism2015v2/Realism2015v2.7z");
            WebClient.DownloadFileAsync(Uri, "Realism2015v2.7z");
            WebClient.DownloadProgressChanged += new System.Net.DownloadProgressChangedEventHandler(WebClient_DownloadProgressChanged);
            WebClient.DownloadFileCompleted += new System.ComponentModel.AsyncCompletedEventHandler(WebClient_DownloadFileCompleted);
 
        }
        void WebClient_DownloadProgressChanged(object sender, System.Net.DownloadProgressChangedEventArgs e)
        {
            label1.Text = string.Format("Downloading... {0} Kb / {1} Kb", e.BytesReceived / 1024, e.TotalBytesToReceive / 1024);
            progressBar1.Value = e.ProgressPercentage;
        }
        void WebClient_DownloadFileCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
        {
            Hide();
            Form2 forma = new Form2();
            forma.ShowDialog();
            Close();
        }
 
        private void progressBar1_Click(object sender, EventArgs e)
        {
 
        }
 
    }
}
Форма2

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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Threading;
using System.Diagnostics;
using SevenZip;
 
namespace WindowsFormsApplication1
{
    public partial class Form2 : Form
    {
        SevenZipExtractor se = new SevenZipExtractor(@"Realism2015v2.7z");
        System.Diagnostics.Process proc = new System.Diagnostics.Process();
 
        public Form2()
        {
            InitializeComponent();
            Ystanovka();
          
        }
        void Ystanovka()
        {
            se.BeginExtractArchive(@Application.StartupPath);
            se.ExtractionFinished += new EventHandler<EventArgs>(se_ExtractionFinished);
        }
 
        void se_ExtractionFinished(object sender, EventArgs e)
        {
            MessageBox.Show("Update completed");
            proc.StartInfo.FileName = "Start Realism2015.exe";
            proc.Start();
            Close();
        }
 
        private void Form2_Load(object sender, EventArgs e)
        {
 
        }
 
        private void label1_Click(object sender, EventArgs e)
        {
 
        }
    }
}
В кратце: первая форма качает архив и вызывает форму два, которая его распаковывает и вызывает программу. Программа тоже пользуется этим файлом (7z.dll), но я пробовал не вызывать её вообще и все равно эта библиотека чем то занята...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.09.2015, 23:35
Ответы с готовыми решениями:

Процесс не может получить доступ к файлу
Как исправить ошибку? LoadVideo: Процесс не может получить доступ к файлу &quot;C:\Temp\preview.avs&quot;, так как этот файл используется...

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

Процесс не может получить доступ к файлу
Проблема вот какая: Файл создаеться после чего появляеться ошибка &quot;Процес не может получить доступ к файлу&quot; try ...

8
27 / 55 / 19
Регистрация: 18.08.2014
Сообщений: 329
18.09.2015, 07:08
на форме 1 - всем объектам, которые использую файл вызови метод Dispose(), чтобы их экземляры убились и освободили файл
0
33 / 33 / 18
Регистрация: 16.09.2015
Сообщений: 246
18.09.2015, 08:08  [ТС]
Цитата Сообщение от Nikeys174 Посмотреть сообщение
на форме 1 - всем объектам, которые использую файл вызови метод Dispose(), чтобы их экземляры убились и освободили файл
там никакие объекты не используют файл, форма 1 качает архив, там нету даже using SevenZip чтобы этот файл задействовать.
0
27 / 55 / 19
Регистрация: 18.08.2014
Сообщений: 329
18.09.2015, 08:24
aurisdies, webClient и proc уничтожать надо? и если бы их использование было в using, то они были бы уничтожены автоматически по окончанию блока using, а так вручную надо их освобождать. Тем более тема уже обсуждалась, что надо использовать ещё и Marshall или ждать уборщика мусора - в таких случаях, как Ваш.
1
33 / 33 / 18
Регистрация: 16.09.2015
Сообщений: 246
18.09.2015, 08:37  [ТС]
можешь ссылку дать?
0
27 / 55 / 19
Регистрация: 18.08.2014
Сообщений: 329
18.09.2015, 08:42
aurisdies, ту тему не могу найти. Но по-русски об освобождении памяти обсуждали тут:
Зачем вызывать Dispose(), если в итоге вызовется Finalize()?
0
33 / 33 / 18
Регистрация: 16.09.2015
Сообщений: 246
18.09.2015, 08:57  [ТС]
вот так отладчик не жалуется... однако, моя проблема не решена, я грешил на эту ошибку, а как оказалось она в другом месте. буду искать дальше!

void WebClient_DownloadFileCompleted(object sender, System.ComponentModel.AsyncCompletedEven tArgs e)
{
Dispose();
Hide();
Form2 forma = new Form2();
forma.ShowDialog();
Close();
}
0
27 / 55 / 19
Регистрация: 18.08.2014
Сообщений: 329
18.09.2015, 08:59
aurisdies, по ссылке описывается, что чистка идет в 2 этапа - Dispose это первый уровень очистки и Finalize() - это уборщик мусора системы, при нехватке памяти. Попробуйте
0
33 / 33 / 18
Регистрация: 16.09.2015
Сообщений: 246
18.09.2015, 11:44  [ТС]
вообщем то эта ошибка вылетала не потому что, что то с кодом, а потому что у меня руки из жопы... я в архив, который скачивает первая форма, добавил (по невнимательности) файл 7z.dll и конечно же при распаковке программа не могла заменить этот файл потому что он занят программой...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.09.2015, 11:44
Помогаю со студенческими работами здесь

Процесс не может получить доступ к файлу
Задача: взять картинку, изменить её размер, сохранить её под тем же именем. Т.к. напрямую сохранить не получается, я решил сохранить её...

Процесс не может получить доступ к файлу
Такая проблема. Открываю файл для чтения,и он разносит информацию по textbox'ам.Вот код для чтения: OpenFileDialog ofd = new...

Процесс не может получить доступ к файлу
Здравствуйте, в программе 2 потока, оба они работают с 1 текстовым файлом, так вот постоянно вылазит такая ошибка. ...

Процесс не может получить доступ к файлу
при изменении статуса пинга выдаётся ошибка: Процесс не может получить доступ к файлу &quot;C:\Documents and Settings\ServerK\Мои...

Процесс не может получить доступ к файлу
Здравствуйте, в чем проблема? Когда затрагивает сохранение, выдает: private void SaveText(string file, string text) { ...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru