Получать уведомления о событиях, транслируемые из Фортрана в управляемом коде - PullRequest
1 голос
/ 16 апреля 2010

У меня есть fortran (неуправляемый код) dll в качестве механизма вычисления и форма C # в качестве GUI.

Теперь вычисления в фортране длинные, поэтому, чтобы не утомлять пользователей, я решил использовать команду Asynch для создания индикатора выполнения. Fortran dll будет отвечать за размещение сообщений в индикатор выполнения по мере выполнения расчета.

Есть идеи, как это можно сделать?

Ответы [ 2 ]

1 голос
/ 16 апреля 2010

Вы должны реализовать функцию anoter в Фортране dll, которая сообщает о прогрессе в цифрах. Например: «GetCalculationProgress», который возвращает два целых числа (текущая итерация и общее количество итераций). Вы периодически вызываете эту функцию в другом потоке в своем приложении C # и читаете эти значения. В Fortran вам, возможно, придется использовать глобальные переменные для их отслеживания.

Кроме того, вот ссылка, объясняющая метод обратного вызова:

http://xtechnotes.blogspot.com/2008/07/callback-to-c-from-unmanaged-fortran.html

0 голосов
/ 16 апреля 2010

Одна ответственность: пользовательский интерфейс должен отвечать за отображение информации о ходе выполнения, будь то индикатор выполнения или другой визуальный эффект. Фортран не должен знать о том, как отображается информация, он просто излучает «события», говорящие о таких вещах, как «только что началось», «55%», «почти сделано» и «упс, которые не работали»

Как проходят события? Возможно, вам нужна какая-то технология «буферизации», возможно, с использованием (именованных) каналов или технологии очереди сообщений. Fortran может использовать библиотеки C, поэтому я полагаю, что если вы выберете коммуникационную технологию, если она не поддерживается непосредственно Fortran, вы можете начать, написав немного C, а затем перейти к этому из Fortran.

...