Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
Ruslik_A
1 / 1 / 0
Регистрация: 14.12.2012
Сообщений: 41
1

Зачем нужна строка с DllImport?

26.06.2015, 15:37. Просмотров 1248. Ответов 7
Метки нет (Все метки)

Получил задание разобраться с одним проектом.
В Program.cs в Main есть вот такая строка
C#
1
[DllImport("kernel32.dll")]
Объясните, пожалуйста, зачем она нужна?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.06.2015, 15:37
Ответы с готовыми решениями:

Зачем нужна абстракция?
Знаю что она определяет некий список параметров, методов. Но зачем это все...

Зачем нужна маршализация?
Если кто-нибудь может внятно объяснить что это и зачем она нужна, буду...

Зачем нужна скобка в коде
Простой вопрос. Почему в 17-й студии выпадает ошибка такая? Скрин ошибки...

Зачем нужна операция b= a% (a=b) при подсчёте НОД?
Привет всем, объясните, зачем нам нужна операция b= a% (a=b)? Как она работает?...

DllImport
Я создал проект и в нем использую библиотеку directX.AudioVideoPlayback. Как...

7
insite2012
Модератор
Эксперт .NET
4862 / 3815 / 1096
Регистрация: 12.10.2013
Сообщений: 11,096
Записей в блоге: 2
26.06.2015, 18:14 2
Цитата Сообщение от Ruslik_A Посмотреть сообщение
зачем она нужна?
Для вызовов методов из неуправляемых dll.
1
Ruslik_A
1 / 1 / 0
Регистрация: 14.12.2012
Сообщений: 41
26.06.2015, 19:12  [ТС] 3
Спасибо!
Еще один вопрос, зачем это нужно в подобном коде?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 [DllImport("kernel32.dll")]
        static extern void AllocConsole();
        static void Main()
        {
            var service = new WindowsService();
            if (Environment.UserInteractive)
            {
                AllocConsole();
                Console.CancelKeyPress += (x, y) => service.Stop();
                service.Start();
                Console.ReadKey();
                service.Stop();
            }
            else
            {
                ServiceBase.Run(service);
            }
Это реализует возможность запуска приложения из консоли и как службы Windows? Верно?
0
insite2012
Модератор
Эксперт .NET
4862 / 3815 / 1096
Регистрация: 12.10.2013
Сообщений: 11,096
Записей в блоге: 2
26.06.2015, 19:37 4
Цитата Сообщение от Ruslik_A Посмотреть сообщение
Еще один вопрос
Смотрите ссылку ниже.
http://pinvoke.net/default.aspx/kernel32.AllocConsole
0
Ruslik_A
1 / 1 / 0
Регистрация: 14.12.2012
Сообщений: 41
27.06.2015, 15:32  [ТС] 5
Цитата Сообщение от insite2012 Посмотреть сообщение
Смотрите ссылку ниже.
Т.е. так и есть, это дает возможность поддреживать два режима?

Добавлено через 11 минут
Возникли еще вопросы по коду:
Вот здесь
C#
1
2
3
4
5
6
7
8
private void OnFileCreate(object sender, FileSystemEventArgs e)
        {
            Console.WriteLine("File of processing:" + e.FullPath);
            if (File.Exists(e.FullPath))
            {
                Task.Factory.StartNew(ProcessDataFile, e.FullPath);
            }
        }
Строка:
C#
1
      Task.Factory.StartNew(ProcessDataFile, e.FullPath);
что обозначает? Вернее, отвечает ли эта строка за многопоточность?
0
insite2012
Модератор
Эксперт .NET
4862 / 3815 / 1096
Регистрация: 12.10.2013
Сообщений: 11,096
Записей в блоге: 2
27.06.2015, 15:58 6
Цитата Сообщение от Ruslik_A Посмотреть сообщение
отвечает ли эта строка за многопоточность?
Да. Создание и запуск новой задачи.
0
Ruslik_A
1 / 1 / 0
Регистрация: 14.12.2012
Сообщений: 41
27.06.2015, 16:15  [ТС] 7
Цитата Сообщение от insite2012 Посмотреть сообщение
Да. Создание и запуск новой задачи.
А даст ли приложению эта строка возможность обрабатывать два и более файлов одновременно (Задача приложения обработать новые файлы в некоторой папке)?
0
Баир
17 / 17 / 9
Регистрация: 23.02.2015
Сообщений: 86
27.06.2015, 18:19 8
почитайте про блокировки, иначе можно получить исключение доступа к файлу
0
27.06.2015, 18:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.06.2015, 18:19

DllImport (Из С++ в С#)
Добрый день, уважаемые господа! Есть такая проблема импорта dll написанной на...

DllImport gdi32
Помогите сделать DllImport На одном проекте, который дан для примера, всё...

DllImport из Delphi
Доброго времени суток, уважаемые форумчане, имеется библиотека, написанная на...


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

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

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