Зависание процесса, когда выполнено с Процессом.NET. Запустить — что случилось?

Мне удалось заставить его работать из подкласса NSWindowController

class MyWindowController: NSWindowController {

    override func keyDown(theEvent: NSEvent) {
        print("keyCode is \(theEvent.keyCode)")
    }
}

UPDATE:

import Cocoa

protocol WindowControllerDelegate {
    func keyDown(aEvent: NSEvent)
}

class WindowController: NSWindowController {

    var delegate: WindowControllerDelegate?

    override func windowDidLoad() {
        super.windowDidLoad()
        delegate = window?.contentViewController as! ViewController
    }
    override func keyDown(theEvent: NSEvent) {
        delegate?.keyDown(theEvent)
    }

}

и ViewController:

class ViewController: NSViewController, WindowControllerDelegate {

    @IBOutlet weak var textField: NSTextField!

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }

    override var representedObject: AnyObject? {
        didSet {
        // Update the view, if already loaded.
        }
    }
    override func keyDown(theEvent: NSEvent) {
        textField.stringValue = "key = " + (theEvent.charactersIgnoringModifiers
            ?? "")
        textField.stringValue += "\ncharacter = " + (theEvent.characters ?? "")
        textField.stringValue += "\nmodifier = " + theEvent.modifierFlags.rawValue.description
    }

}
28
задан Chris Farmer 22 January 2009 в 15:36
поделиться

3 ответа

Одна стандартная проблема: процесс мог ожидать Вас для чтения его вывода. Создайте отдельный поток для чтения из его стандартного вывода, в то время как Вы ожидаете его для выхода. Это - что-то вроде боли, но это может быть проблемой.

37
ответ дан Jon Skeet 14 October 2019 в 10:46
поделиться

Я знаю, что мой SVN repos может иногда отставать, поэтому возможно, 5 секунд не достаточно долги? Вы скопировали строку, Вы являетесь передающими к процессу от точки останова, таким образом, Вы положительны, что это ничего не предлагает Вам?

0
ответ дан scottm 14 October 2019 в 10:46
поделиться

Джон Скит прав в деньгах!

Если вы не возражаете против опроса после запуска команды svn, попробуйте следующее:

Process command = new Process();
command.EnableRaisingEvents = false;
command.StartInfo.FileName = "svn.exe";
command.StartInfo.Arguments = "your svn arguments here";
command.StartInfo.UseShellExecute = false;
command.StartInfo.RedirectStandardOutput = true;
command.Start();

while (!command.StandardOutput.EndOfStream)
{
    Console.WriteLine(command.StandardOutput.ReadLine());
}
15
ответ дан 28 November 2019 в 03:04
поделиться
Другие вопросы по тегам:

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