小编0xD*_*EEF的帖子

如何让MSBuild安静输出,但有错误/警告摘要

我只是试图从构建中获取没有输出,除了最后的错误/警告摘要.这不是一项艰巨的任务.

命令行:

msbuild.exe /nologo /verbosity:quiet /consoleloggerparameters:summary project.sln
Run Code Online (Sandbox Code Playgroud)

如下所述:http://msdn.microsoft.com/en-us/library/ms164311.aspx 似乎MSBuild无法正常工作 - 根本没有输出.with/verbosity:正常有一吨输出和最后一个有用的错误/警告摘要,有没有看到噪音的方法?

MSBuild报告随Studio Express 2013一起分发的版本12.0.21005.1.

msbuild visual-studio-2013

14
推荐指数
4
解决办法
1万
查看次数

如何从工作线程/类更新GUI线程/类?

第一个问题在这里大家好.

我正在处理的要求是一个小型测试应用程序,它通过串行端口与外部设备通信.通信可能需要很长时间,设备可以返回各种错误.

该设备在其自己的类中很好地抽象,GUI线程开始在其自己的线程中运行,并具有通常的打开/关闭/读取数据/写入数据基本功能.GUI也非常简单 - 选择COM端口,打开,关闭,显示数据读取或设备错误,允许修改和回写等.

问题是如何从设备类更新GUI?设备处理的数据有几种不同类型,因此我需要在GUI表单/线程类和工作设备类/线程之间建立一个相对通用的桥梁.在GUI到设备方向上,一切正常,在各种GUI生成的事件中,[Begin] Invoke调用打开/关闭/读/写等.

我在这里阅读了这个帖子(如何从C#中的另一个线程更新GUI),其中假设GUI和工作线程在同一个类中.Google搜索引发了如何创建委托或如何创建经典后台工作者,但这根本不是我需要的,尽管它们可能是解决方案的一部分.那么,是否有一个简单但通用的结构可以使用?

我的C#水平是温和的,我一直在编程我的所有工作生活,给出一个线索我会弄清楚(并回发)...提前感谢任何帮助.

c# user-interface multithreading worker

2
推荐指数
1
解决办法
4335
查看次数

Perl:动态加载模块并访问导出的内容

Stackoverflow上研究了Perl 需要的文档和其他类似的链接后,我仍然没有更聪明,必须错过一个相当简单的技巧.我在运行时加载一个模块并在其中调用子程序.问题是我不一定知道导出的子例程的名称,但必须有一个并且它被导出.

模块都看起来像这样,即.他们粗略地遵循从perlmonks.org获取的模板

package modules::Test;

use strict;
use Exporter;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);

$VERSION     = 1.00;
@ISA         = qw(Exporter);
@EXPORT      = (*TestSubSomeUnknownName);
@EXPORT_OK   = qw(&TestSubSomeUnknownName);
%EXPORT_TAGS = ( ALL => [qw(&TestSubSomeUnknownName)]
               );


sub TestSubSomeUnknownName
{
    # return a hash reference
}
Run Code Online (Sandbox Code Playgroud)

然后我可以像这样访问子,假设我知道它的名字:

use Module::Load;

my $package = "modules::Test";
my $subr = "TestSubSomeUnknownName";

load $package;
# Call the subroutine
my $hashref = $package->$subr;
Run Code Online (Sandbox Code Playgroud)

但是,如果有人在包裹中拼错了名字或我不知道呢?解决方案似乎是使用其中一个EXPORT来查看其中的内容,但是如何才能完成?

perl load module dynamic package

2
推荐指数
1
解决办法
2479
查看次数

Perl POE :: Wheel :: FollowTail在不修改全局变量的线程中运行

在这个程序中,POE :: Wheel :: FollowTail适用于跟踪文件的尾部,它也在一个单独的线程中运行,以简单地监视编译作业的进度.
在InputEvent处理程序中有一个粗糙的正则表达式来提取编译结果,并且一切正常,但是我无法获得任何结果值,可以在此sub之外访问.即使我将结果变量放在全局范围内,也不会修改它们.

该程序包括一个运行编译作业的进程,另一个正在查看日志,以及主循环等待.

全球范围:

my $Pass = 0;
my $Done = 0;
Run Code Online (Sandbox Code Playgroud)

然后开始监控:

threads->create(\&StartWatcher);
Run Code Online (Sandbox Code Playgroud)

watch-log文件sub的位置如下所示:

sub StartWatcher
{
my $logfile = "filename.log";

# Create the logfile watcher
POE::Session->create
    (
    inline_states => 
        {
        _start => sub 
            {
            $_[HEAP]{tailor} = POE::Wheel::FollowTail->new( Filename => $logfile, InputEvent => "got_log_line", );
            },
        got_log_line => sub 
            {
            $Pass += () = $_[ARG0] =~ /^\d+.*vcproj \- 0 error\(s\), \d+ warning\(s\)/g;
            $Done += () = $_[ARG0] =~ /^\d+.*vcproj \- \d+ error\(s\), \d+ warning\(s\)/g;
            print …
Run Code Online (Sandbox Code Playgroud)

perl multithreading poe

1
推荐指数
1
解决办法
633
查看次数