下图显示了我的代码的工作原理.当我按下按钮2时,列表框会更新,但不会在我按下按钮1时更新.为什么?
伪代码http://i44.tinypic.com/mj69oj.gif
问题线程是否相关?如果是,我应该在哪里添加对(Begin)Invoke的调用?
需要注意的一件有趣的事情是,如果我先按下button1然后按下按钮2,则单击button2时会显示button1单击生成的数据.所以似乎doFoo生成的数据在某处缓冲,然后在按下button2后推送到列表框.
编辑:
我尝试将AddNumber添加到表单代码中,并在listBox1.InvokeRequired返回true时添加对Invoke的调用.这解决了问题,但不是最好的设计.我不希望GUI必须"担心"如何将项添加到模型的一部分列表中.
如何在添加到列表类内部列表的同时保持逻辑,同时在列表更改时仍然更新gui?
编辑2:
现在我们已经确认这是一个线程问题,我已经更新了图像,以便更接近地反映我正在处理的实际代码的设计.
虽然Lucero的建议仍然解决了这个问题,但我希望能找到一些不需要表格来了解dll或CDllWrapper的东西.
模型(ListBoxDataBindingSource等)应该对视图(列表框,按钮,标签等)一无所知
是否可以通过使用PHP将用户重定向到不同的页面?
假设用户去了www.example.com/page.php,我想将它们重定向到www.example.com/index.php,如何在不使用元刷新的情况下这样做?可能吗?
这甚至可以保护我的页面免受未经授权的用户
是否有更好的解决方案来查找表中多个已知ID的问题:
SELECT * FROM some_table WHERE id='1001' OR id='2002' OR id='3003' OR ...
Run Code Online (Sandbox Code Playgroud)
我可以有几百个已知物品.想法?
这应该是一个基本问题,但为什么更好地使用这样的东西:
$pwd = filter_input(INPUT_POST, 'pwd');
Run Code Online (Sandbox Code Playgroud)
而不仅仅是:
$pwd = $_POST['pwd'];
Run Code Online (Sandbox Code Playgroud)
PS:我知道过滤器扩展可以与更多参数一起使用,以提供额外的清理级别.
鉴于Java的"一次编写,随处运行"范例以及Java教程为所有原始数据类型提供明确的位大小这一事实,而没有丝毫暗示这依赖于任何东西,我会说,是的,int一直是32位.
但有什么警告吗?该语言规范定义的数值范围,但是一无所知的内部表示说,我想,这可能是不应该.但是,我有一些代码对int假设32位宽度的变量执行按位操作,我想知道该代码在所有体系结构上是否安全.
这类问题是否有很好的深入资源?
我有一个javascript函数调用泛型函数来对服务器进行ajax调用.我需要从ajax调用的回调函数中检索结果(true/false),但我得到的结果总是"未定义".
没有我所有逻辑的通用函数的超简化版本将是:
function CallServer(urlController) {
$.ajax({
type: "POST",
url: urlController,
async: false,
data: $("form").serialize(),
success:
function(result) {
if (someLogic)
return true;
else
return false;
},
error:
function(errorThrown) {
return false;
}
});
}
Run Code Online (Sandbox Code Playgroud)
调用它的函数将是这样的:
function Next() {
var result = CallServer("/Signum/TrySave");
if (result == true) {
document.forms[0].submit();
}
}
Run Code Online (Sandbox Code Playgroud)
"result"变量总是"未定义",调试它我可以看到正在执行回调函数的"return true"行.
有关为什么会发生这种情况的任何想法?我怎样才能将返回值从回调函数冒泡到CallServer函数?
谢谢
我有一个小代码块,应该将文本附加到文件的beg.但是它仍然只会添加到文件的末尾.我认为倒带将指针设置到文件的前面,因此当我使用fprintf添加文本时,它应该添加到前面.我怎么能改变这个?
fp = fopen("Data.txt", "a");
rewind(fp);
fprintf(fp, "%s\n", text);
fclose(fp);
Run Code Online (Sandbox Code Playgroud)
Text是要添加到文件前面的char数组
如何在WSH jscript文件中设置一个调用另一个程序的环境变量?这是减少的测试用例:
envtest.js
----------
var oShell = WScript.CreateObject("WScript.Shell");
var oSysEnv = oShell.Environment("SYSTEM");
oSysEnv("TEST_ENV_VAR") = "TEST_VALUE";
oExec = oShell.Run("envtest.bat", 1, true);
envtest.bat
-----------
set
pause
Run Code Online (Sandbox Code Playgroud)
我希望在变量列表中看到TEST_ ENV _VAR,但它不存在.怎么了?
编辑:
如果有人可以生成工作代码示例,我会将其标记为正确答案.:)
任何人都可以在初级中级层面解释企业服务总线环境中"总线","传输"和"端点"的术语吗?我是一名C#开发人员,现在有几年经验,但只是刚开始使用ESB.
似乎"总线"实际上是一个可以发送和接收消息的队列.我很好.然而,我正在使用NServiceBus处理一些现有的代码,我想如果我理解了"端点"和"传输"术语,我会在我的理解中实现大幅度的飞跃.
考虑到模块的名称,如何测试是否安装了一组模块.例如
modules = set(["sys", "os", "jinja"])
for module in modules:
# if test(module exists):
# do something
Run Code Online (Sandbox Code Playgroud)
虽然可以将测试写成:
try:
import sys
except ImportError:
print "No sys!"
Run Code Online (Sandbox Code Playgroud)
这对我正在做的事情来说有点麻烦.有没有动态的方法来做到这一点?
我已经尝试了eval("import%s"%module),但是抱怨编译错误.
我很感谢你的想法和建议.谢谢.
javascript ×2
php ×2
64-bit ×1
ajax ×1
batch-file ×1
c ×1
c# ×1
data-binding ×1
environment ×1
esb ×1
file-io ×1
filter ×1
import ×1
java ×1
jquery ×1
listbox ×1
module ×1
python ×1
redirect ×1
reflection ×1
security ×1
servicebus ×1
sql ×1
winforms ×1
wsh ×1