Как я уничтожаю процесс с помощью Vb.NET или C#?

Начиная с вашего фрейма данных DF, вы можете использовать пакет data.table:

library(data.table)

## EDIT: As suggested by @MichaelChirico, setDT converts a
## data.frame to a data.table by reference and is preferred
## if you don't mind losing the data.frame
setDT(DF)

# EDIT: To get the column name 'Mean':

DF[, .(Mean = rowMeans(.SD)), by = ID]

#      ID     Mean
# [1,]  A 3.666667
# [2,]  B 4.333333
# [3,]  C 3.333333
# [4,]  D 4.666667
# [5,]  E 4.333333
69
задан Mark Biek 25 September 2008 в 18:36
поделиться

5 ответов

Вы захотите использовать Система. Диагностика. Процесс. Уничтожьте метод. Можно получить процесс, который Вы хотите использовать Система. Диагностика. Proccess. GetProcessesByName.

Примеры были уже отправлены здесь, но я нашел, что версия non-.exe работала лучше, таким образом, что-то как:

foreach ( Process p in System.Diagnostics.Process.GetProcessesByName("winword") )
{
    try
    {
        p.Kill();
        p.WaitForExit(); // possibly with a timeout
    }
    catch ( Win32Exception winException )
    {
        // process was terminating or can't be terminated - deal with it
    }
    catch ( InvalidOperationException invalidException )
    {
        // process has already exited - might be able to let this one go
     }
}

Вы, вероятно, не должны иметь дело с NotSupportedException, который предполагает, что процесс является удаленным.

94
ответ дан Blair Conrad 7 November 2019 в 09:46
поделиться

Уничтожение Word обрабатывает, напрямую возможно (см. некоторые из других ответов), но напрямую грубый и опасный: что, если у пользователя есть важные несохраненные изменения в открытом документе? Не говоря уже об устаревших временных файлах это оставит позади...

Это, вероятно, насколько можно пойти в этом отношении (VB.NET):

    Dim proc = Process.GetProcessesByName("winword")
    For i As Integer = 0 To proc.Count - 1
        proc(i).CloseMainWindow()
    Next i

Это закроет все открытые окна Word организованным способом (предлагающий пользователю сохранить его работу если применимо). Конечно, пользователь может всегда нажимать 'Cancel' в этом сценарии, таким образом, необходимо быть в состоянии обработать этот случай также (предпочтительно путем подъема, "нравятся близко всем экземплярам Word, иначе мы не можем продолжить" диалоговое окно...)

25
ответ дан mdb 7 November 2019 в 09:46
поделиться

Вот легкий пример того, как уничтожить весь Word Processes.

Process[] procs = Process.GetProcessesByName("winword");

foreach (Process proc in procs)
    proc.Kill();
15
ответ дан Nick Berardi 7 November 2019 в 09:46
поделиться

Можно обойти проблемы безопасности и создать намного более вежливое приложение путем простой проверки, работает ли процесс Word и просит, чтобы пользователь закрыл его, затем нажмите кнопку 'Continue' в приложении. Это - подход, проявленный многими установщиками.

private bool isWordRunning() 
{
    return System.Diagnostics.Process.GetProcessesByName("winword").Length > 0;
}

, Конечно, можно только сделать это, если приложение имеет GUI

5
ответ дан Chris Lawlor 7 November 2019 в 09:46
поделиться

Что-то вроде этого будет работать:

foreach ( Process process in Process.GetProcessesByName( "winword" ) )
{
    process.Kill();
    process.WaitForExit();
}
1
ответ дан Jimi 7 November 2019 в 09:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: