Вариант с сокетами вам уже предложили, но добавлю еще один способ:
Для быстрого обмена данными между процессами обычно используют разделяемую память.
То есть, PHP скрипт создает участок памяти (shmop_open) и пишет туда данные расчётов, а уже с помощью C#-утилиты считываете данные из этого участка и манипулируете ими.
Ну, а для оповещения утилиты о том, что данные можно забирать, можно использовать мьютекс. То есть, снова же, PHP при запуске создает мьютекс и занимает его, а утилита - также пытается его занять и "спит" в очереди. Как только данные можно будет обрабатывать - PHP освободит мьютекс, дав утилите команду "Фас!"
С PHP на Windows не игрался, но, думаю, что проблем не возникнет как с разделяемой памятью, так и с созданием мьютекса (распараллелить PHP ведь смогли уже =) ).