2

我做了很多搜索,但似乎找不到最新的答案。

我目前正在重写一个用 Perl 编写的应用程序。所以我不是从头开始。

该应用程序目前已经有一个用 C# .net 编写的基本 GUI,但我的目标之一是创建一个新的和改进的 GUI。这个 GUI 必须实现几个功能,所以如果我可以使用 .net 中的 GUI 构建器,它会真正减轻我的工作量

现在我的问题:

我想将 GUI 和 Perl 逻辑分开。因此,理论上,如果我创建的 GUI 只是调用各种 Perl 脚本-> 执行某些操作然后将某些内容返回给 GUI,它应该可以工作。

有没有人有使用 C# .net 创建的 GUI 与各种 Perl 脚本交互的经验?如果是的话,你能告诉我一些你在经历中注意到的积极或消极的事情吗?

我也一直在玩 tkx。我想我可以使用它,但它会明显增加开发时间。有人知道生成 perl tkx 代码的 GUI 构建器吗?

我也看过其他人,如 TK、QT,......但主要问题是它们都有依赖关系。

我会很感激任何建议。谢谢

4

2 回答 2

1

你想在 C# 中有一个新的 gui 吗?Visual Studio 有一个用于 WinForms 和 WPF 的 gui 构建器。WinForms 构建器非常好,但是 WPF 构建器相当垃圾,最好自己“手动编码”XAML 代码,并且仅使用构建器来可视化您正在构建的内容。对于动画/模板的严肃工作,我推荐 Blend。

我从未执行过 perl 脚本,但如果您的 perl 解释器没有像样的 .Net api,则执行其他外部程序的过程不会有所不同。

要以“标准方式”执行脚本,您可以使用 System.Diagnostics 命名空间中的 Process 类。您可以输入命令行参数或标准输入并读取标准输出和标准错误。您唯一应该担心的是,如果外部程序挂起,将某些内容放入 stderr 但没有结束,您可能会被卡住。您应该同时阅读脚本的 stdout 和 stderr(每个都在单独的线程中),并且进程也应该被实例化并在自己的线程中运行 - 这样您就不会挂起您的应用程序,您可以监视进程并为用户提供“取消”按钮.

这样做的好处是 System.ComponentModel.BackgroundWorker 命名空间中的 BackgroundWorker 类,它本身可以处理许多“低级线程事物”

于 2013-06-04T13:37:34.563 回答
1

ActiveState 似乎已经向 sourceforge 发布了一个名为GUI Builder的程序。它似乎与 Perl、Ruby、TCL 和 Python 兼容。

于 2013-06-04T12:50:09.563 回答