Вы можете создать функцию расширения на CoroutineScope
или функцию с CoroutineScope
в качестве параметра:
fun CoroutineScope.doThis() {
launch { ... }
}
fun doThatIn(scope: CoroutineScope) {
scope.launch { ... }
}
Также вы можете использовать coroutineScope
или [ 115] , в зависимости от ваших потребностей:
suspend fun someFun() = coroutineScope {
launch { ... }
}
suspend fun someFun() = supervisorScope {
launch { ... }
}
Кросс-платформенная разработка - хорошая идея, но, честно говоря, я никогда не видел приложения, которое выглядело бы действительно вне своей родной среды. Вот почему я думаю, что если вы действительно хотите предложить хороший пользовательский интерфейс, вам следует использовать собственные наборы инструментов на всех платформах, которые вы хотите поддерживать.
Конечно, если вам просто нужна проверка концепции, тогда WinForms на Mac (или Linux) в порядке, но если вы хотите, чтобы приложение конкурировало с другим нативным решением, вам действительно стоит подумать о написании отдельного нативного интерфейса для каждой поддерживаемой платформы.
Хорошим примером того, как это было сделано, является MindManager ] из Mindjet . Их версия для Mac - это полностью переписанный с нуля интерфейс. В результате получилось приложение, которое дает пользователям Mac опыт, который они привыкли ожидать от своей платформы.
Итак, вернемся к Mono. В Mono есть привязок какао. Лично я никогда не пробовал их использовать, но если вы хотите настроить свое приложение на Mac, на них, безусловно, стоит взглянуть. Было бы действительно здорово, если бы их можно было рассматривать как правильный выбор для разработки пользовательского интерфейса на Mac.
При принятии решения о или не использовать кроссплатформенную архитектуру, удовлетворить ваши требования иметь жесткий пользовательский интерфейс против гибкости к изменениям и времени разработки. Использование платформы пользовательского интерфейса для конкретной платформы (почти) всегда даст вам лучший внешний вид и лучшие результаты, чем вы получите от кроссплатформенного.
GtkSharp требуется X11 на Mac OS X. Пользователи Mac сочтут это неприятным. Я не пробовал Winforms на OS X, но поддержка winforms для Linux в mono была довольно незрелой (с ошибками) и медленной. Я не думаю, что на данный момент есть зрелый инструментарий .net GUI для OS X, по крайней мере, ничего на уровне Swing или SWT.