|
использование небезопасного кода
|
|||
---|---|---|---|
#18+
Имеется сервис, который использует сишные dll (APi к китайскому RFID сканеру) через dllimport. по какой то причине (китайский код) в либе вываливается ошибка доступа к памяти и процес крашится. Никакой перехват try catch естественно не работает. Проблема в том что это именно сервис и он должен крутится все время - заглядывать в список служб не упал ли он никто пять раз в день не будет. Есть ли какой способ дергать подобное API безопасно - как то изолировать его или перехватывать так чтобы не падал процесс? Или может есть какой способ в винде перезапускать периодически службу - шедулер через net start как то примитивно, даже неудбно такое заказчику предлагать. . ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 14:19 |
|
использование небезопасного кода
|
|||
---|---|---|---|
#18+
caballeroИли может есть какой способ в винде перезапускать периодически службу - шедулер через net start как то примитивно, даже неудбно такое заказчику предлагать. зато работоспособно. лучше автоматический перезапуск настроить а что падает - или кривой интероп, или кривая библиотека. вариант - из сервиса запускать отдельный процесс, при падении - перезапускать. заодно можно этот процесс на с++ сделать, может падать реже будет ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 14:47 |
|
использование небезопасного кода
|
|||
---|---|---|---|
#18+
ошибка в dll внутри интероп как у их в примере что с api идет перезапускать конечно можно. Думал есть способ так изолировать вызовы APi чтобы процес не падал. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 15:02 |
|
использование небезопасного кода
|
|||
---|---|---|---|
#18+
caballero, 1 2 Только не надо забывать о том, что CSE сообщает о том, что состояние программы действительно нарушено, и пытаться реанимировать её в том же процессе не нужно. Вот достойно помереть, выдав куда нужно сообщение - вполне можно. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 15:08 |
|
использование небезопасного кода
|
|||
---|---|---|---|
#18+
caballeroДумал есть способ так изолировать вызовы APi чтобы процес не падал. изолировать в отдельном процессе, иначе - результат непредсказуем ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 15:22 |
|
использование небезопасного кода
|
|||
---|---|---|---|
#18+
Если просто обработать исключение, то HandleProcessCorruptedStateExceptionsAttribute. Главное, как замечено сообщением выше, при таком простом способе в общем случае результат непредсказуем, так что это годится только если есть уверенность, что ошибки некритичные. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 16:19 |
|
|
start [/forum/topic.php?fid=20&msg=38888529&tid=1401871]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
others: | 334ms |
total: | 492ms |
0 / 0 |