小编Tom*_*lis的帖子

自动化InvokeRequired代码模式

我已经痛苦地意识到需要在事件驱动的GUI代码中编写以下代码模式的频率,其中

private void DoGUISwitch() {
    // cruisin for a bruisin' through exception city
    object1.Visible = true;
    object2.Visible = false;
}
Run Code Online (Sandbox Code Playgroud)

变为:

private void DoGUISwitch() {
    if (object1.InvokeRequired) {
        object1.Invoke(new MethodInvoker(() => { DoGUISwitch(); }));
    } else {
        object1.Visible = true;
        object2.Visible = false;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是C#中的一个尴尬模式,无论是记忆还是打字.有没有人提出某种捷径或构造,在一定程度上自动化?如果有一种方法可以将函数附加到执行此检查的对象,而不必经历所有这些额外的工作,如object1.InvokeIfNecessary.visible = true类型快捷方式,那就太酷了.

上一页答案已经讨论的只是打电话的invoke()每次不切实际,甚则调用()语法既效率低下,仍然尴尬应对.

那么,有没有人想出任何捷径?

c# multithreading thread-safety invokerequired winforms

178
推荐指数
7
解决办法
13万
查看次数

C#:有人可以解释反思的实用性吗?

所以我试着搜索,希望有人对此有一个很好的解释,没有运气.

我问了我的另一个朋友一个不同的问题(我现在已经忘记了),他的回答只是在他签字之前的"反思".

我仍然是C#世界的新手,曾经是业余的VB.net程序员(也是JavaScript,ActionScript和C),我正在尽我所能去掌握这些先进的概念.

有许多哲学答案 - "应用程序在看自己" - 但它们没有提供任何实际的提示,说明实际发生的事情或在该环境中如何使用它.

那么,什么是反思,为什么重要,以及为什么/如何使用它?

.net c# reflection

18
推荐指数
4
解决办法
7619
查看次数

为什么System.Threading.Timer会自行停止?

在我使用System.Threading.TimerWindows服务项目之前,我正在做一个小型测试项目.它工作得非常好,但计时器会在一两分钟后自行停止.

测试项目的完整来源是:

using System;
using System.Windows.Forms;
using System.Threading;

namespace studyTimers {
    public partial class Form1 : Form {
        public Form1() {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e) {
            TimerCallback timerDelegate = new TimerCallback(tick);
            System.Threading.Timer testTimer = new System.Threading.Timer(timerDelegate, null, 1000, 1000);
        }

        void tick(Object obj) {
            if (label1.InvokeRequired) {
                label1.Invoke(new MethodInvoker(() => tick(obj)));
            } else {
                label1.Text = DateTime.Now.ToString();
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

显然,目标是用当前时间更新标签.我注意到稍后更新停止了.为什么会这样?

.net c# service timer

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

WiX:防止32位安装程序在64位Windows上运行

由于用户混淆,我们的应用程序需要单独的安装程序,用于32位和64位版本的Windows.虽然32位安装程序在win64上运行良好,但它有可能造成支持问题,我们希望防止这种情况发生.

我想阻止32位MSI安装程序在64位Windows机器上运行.为此,我有以下条件:

<Condition Message="You are attempting to run the 32-bit installer on a 64-bit version of Windows.">
  <![CDATA[Msix64 AND (NOT Win64)]]>
</Condition>
Run Code Online (Sandbox Code Playgroud)

使用Win64定义如下:

<?if $(var.Platform) = "x64"?>
<?define PlatformString = "64-bit"?>
<?define Win64 ?>
<?else?>
<?define PlatformString = "32-bit"?>
<?endif?>
Run Code Online (Sandbox Code Playgroud)

事实是,我无法使这项检查工作正常.无论是一直开火,还是一无所有.目标是检查运行时msix64变量是否存在于编译时Win64变量中,如果这些变量没有排列则抛出错误,但逻辑不起作用我打算如何操作.有没有人想出更好的解决方案?

installation platform windows-installer wix wix3

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

防止现有的CSS样式化注入的HTML/CSS

我正在开发一个项目,在我无法控制的网页上注入JS + CSS + HTML.

我担心主机页面样式化我注入的代码 - 我希望我注入的代码只服从我的样式,而不是他们的样式.

目前我唯一能做到这一点的方法就是要明确指定容器<div>类的每个可能的标签(使用预定义的,已知的浏览器默认值),并依靠继承将这些规则传播到我的其余部分.注入HTML.这个CSS需要出现在页面<head>标签的底部.

我不认为这是最好的解决方案,我不期待实施它.当然有更好的方法.

html javascript css internet-explorer code-injection

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

WiX:将服务安装为LocalService

我试图通过WiX 3.0让我的应用程序成为安装程序.确切的代码是:

<File Id="ServiceComponentMain" Name="$(var.myProgramService.TargetFileName)" Source="$(var.myProgramService.TargetPath)" DiskId="1" Vital="yes"/>

<!-- service will need to be installed under Local Service -->
<ServiceInstall
                        Id="MyProgramServiceInstaller"
                        Type="ownProcess"
                        Vital="yes"
                        Name="MyProgramAddon"
                        DisplayName="[removed]"
                        Description="[removed]"
                        Start="auto"
                        Account="LocalService"
                        ErrorControl="ignore"
                        Interactive="no"/>
<ServiceControl Id="StartDDService" Name="MyProgramServiceInstaller" Start="install" Wait="no" />
<ServiceControl Id="StopDDService" Name="MyProgramServiceInstaller" Stop="both" Wait="yes" Remove="uninstall" />
Run Code Online (Sandbox Code Playgroud)

事情是由于某种原因,LocalService在"安装服务"步骤失败,如果我将其更改为"LocalSystem",则安装程序会在尝试启动服务时超时.

该服务在系统启动时手动启动,并且所有意图和目的都很有效.我听说在LocalService下正在使服务正常工作存在问题,但Google并没有真正帮助,因为每个人的回答都是"让它工作到kthx".

只是希望在安装过程中设置并启动此服务,就是这样.有帮助吗?谢谢!

installation windows-installer wix wix3

15
推荐指数
4
解决办法
2万
查看次数

音频DSP初学者的资源?

我对音频DSP编程感兴趣,但没有任何特定语言.我似乎记得有一个网站有常见DSP应用程序(压缩器,限制器等)的配方,但我似乎无法在我的书签或谷歌中找到它....这里有没有人知道这样的地方?

除此之外,我在数学方面不是很有文化,但我对算法和逻辑以及几种不同语言的工作知识有很强的理解力.对于初学的DSP程序员来说,有哪些好的资源?

谢谢

汤姆

audio signal-processing

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

C#:HtmlDocument对象没有构造函数?

那是怎么回事?似乎获取正在运行的HtmlDocument对象的唯一方法是复制mshtml/webbrowser控件的Document属性.但产卵是sloooooooooooow.我想避免编写自己的HTML解析器,HtmlAgilityPack是copyleft.

是否有其他来源获取实例化的HtmlDocument,我可以将HTML从字符串转储到?

或者,当使用带有img标签和tr元素的InnerHtml/OuterHtml时,有没有办法覆盖HtmlElement令人讨厌的习惯?

编辑:我指的是System.Windows.Forms.HtmlDocument.我很抱歉,我还是C#和.Net的新手,对COM以及本主题带来的其他一些事情知之甚少.

c# parsing dom

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

Linux/Perl:除STDOUT和STDERR之外的其他输出缓冲区?

出于好奇,是否可以在Perl脚本中创建,实例化或以其他方式访问除STDOUT和STDERR之外的其他输出缓冲区?

用例是管道输入文件或其他命令的附加输出,例如 ./doublerainbow.pl 3>full_on.txt 4>all_the_way!.txt

linux perl stdout

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

使用Flash + AS3发布/调试配置

我最近遇到了一些令人尴尬的情况,我不得不意外地向客户端发送了一个构建,而不是所有的调试标志和变量都未设置.(它正在向调试发送请求而不是发布服务器等...)

部分原因是我的代码组织很差; 我已经解决了这个问题.

但是,Flash似乎不允许设置不同的构建配置,并且Actionscript Compile设置托管各种交换机,以便忘记检查/取消选中某些内容(OMG,我忘了禁用调试器支持!)就像发生在我身上一样.在任何情况下,我发现在我的发布配置和调试配置之间手动跳转很容易搞砸.

那么,其他开发人员,您使用什么技术来防止在测试配置和您向老板/客户/谁发出的构建配置之间跳转?

我知道我应该慢下来,但我更喜欢设置一些东西,我只能翻转开关.经过长时间的中断后我才重新回到Flash中(Flash MX + 2004年的一点点).

哦,我知道禁用调试支持和设置导入密码是徒劳的,所有这一切,我的目标是简单地将脚本小子放在我的项目之外.反编译器胜过一切......

无论如何,谢谢!

debugging flash release actionscript-3

7
推荐指数
2
解决办法
3413
查看次数