我一般都对部分实现接口持谨慎态度.但是,IAsyncResult它有点特殊情况,因为它支持几种截然不同的使用模式.你经常使用/看看使用AsyncState/ AsyncCallbackpattern,而不是只是调用EndInvoke,使用AsyncWaitHandle或轮询IsCompleted(yuck)?
相关问题:检测ThreadPool WorkItem是否已完成/等待完成.
考虑这个类(非常近似,需要锁定):
public class Concurrent<T> {
private ManualResetEvent _resetEvent;
private T _result;
public Concurrent(Func<T> f) {
ThreadPool.QueueUserWorkItem(_ => {
_result = f();
IsCompleted = true;
if (_resetEvent != null)
_resetEvent.Set();
});
}
public WaitHandle WaitHandle {
get {
if (_resetEvent == null)
_resetEvent = new ManualResetEvent(IsCompleted);
return _resetEvent;
}
public bool IsCompleted {get; private set;}
...
Run Code Online (Sandbox Code Playgroud)
它WaitHandle(懒惰创建,正如IAsyncResult文档中所述)IsCompleted,但我没有看到AsyncState …
我想做这样的事情:
c:\data\> python myscript.py *.csv
Run Code Online (Sandbox Code Playgroud)
并将目录中的所有.csv文件传递给我的python脚本(sys.argv包含["file1.csv", "file2.csv"]等等)
但sys.argv只是收到["*.csv"]表明通配符没有扩展,所以这不起作用.
我觉得有一种简单的方法可以做到这一点,但无法在Google上找到它.有任何想法吗?
我最近遇到了一个问题,即提出简单遗传算法的输出,该算法寻找极值为2的自变量函数f(x1,x2).我希望能够使用x1作为x,x2作为y,f作为z,并在3d空间中绘制可以旋转的点.(我目前正在使用颜色作为'z轴'在位图上绘制它.)
我应该从哪里开始?
更新:
我找到了一个用于C#的3D引擎目录,但有很多可供选择的...你能告诉我们其中任何一个是否最适合我的问题?
更新2:
感谢Cameron的建议,WPF中的3D选项似乎符合我的需求.我肯定会试一试.
我在这里重新发布他的链接:
*WPF 3D教程
*CodeProject:WPF 3D Primer
*CodeProject:WPF 3D:n的第1部分
这个项目最初是作为一个开发平台开始的,因为我希望能够为移动设备编写游戏,同时也能够在我的台式机上运行和调试代码(即,EPOC设备模拟器非常糟糕):平台吧目前支持的是:
该架构非常完整,包括16位565视频帧缓冲,闪烁,基本光栅操作,软件像素着色器,带着色器的音频混合器(dsp fx),基本输入,简单的虚拟文件系统......虽然这是第一次写入和所以有些地方需要进行一些重构.一切都已被抽象出来,指导原则是:
我的想法是开源它,但是无法管理它,我怀疑软件本身会从这一举措中受益.然而,我自己从未维护的项目中学到了很多东西.
那么,请提前感谢您阅读所有这些...真的,你会做什么?
我可以写:
update my_table
set xml = updateXML(xml, '/a/b', '1')
where document_id = 123
Run Code Online (Sandbox Code Playgroud)
现在,如果在同一更新查询中我也想将/ a / c设置为2(另外将/ a / b设置为1)呢?我很想写:
update my_table
set
xml = updateXML(xml, '/a/b', '1'),
xml = updateXML(xml, '/a/c', '2')
where document_id = 123
Run Code Online (Sandbox Code Playgroud)
但这给了我一个“ ORA-00957:重复的列名”。关于如何做到这一点的任何建议?
我在编写PHP时遇到麻烦.
我有一个JavaScript/jQuery HTML5页面使用$ .post与我的PHP脚本交互.但是,PHP面临着一个奇怪的问题,可能与编码有关.
当我写作
htmlentities("í")
Run Code Online (Sandbox Code Playgroud)
我希望PHP输出í.然而,相反它输出í
在开始时,我认为我在编码时犯了一些错误
htmlentities("í")=="í"?"Good":"Fail";
Run Code Online (Sandbox Code Playgroud)
正在输出"失败",其中
htmlentities("í")=="í"?"Good":"Fail";
Run Code Online (Sandbox Code Playgroud)
但htmlentities($search, null, "utf-8")按预期工作.
我想让PHP与MySQL服务器通信,但它也有编码问题,即使我使用utf8_encode.我该怎么办?
编辑:在SQL命令,写
SELECT id,uid,type,value FROM users,profile
WHERE uid=id AND type='name' AND value='XXX';
Run Code Online (Sandbox Code Playgroud)
其中XXX不包含任何字符,按预期工作,但如果有任何'í'字符则不然.
SET NAMES 'utf8';
SET CHARACTER SET 'utf8';
SELECT id,uid,type,value FROM users,profile
WHERE uid=id AND type='name' AND value='XXX';
Run Code Online (Sandbox Code Playgroud)
不仅没有íchars,但它也没有任何"特殊"字符的字符串失败.从SET NAMES和SET CHARACTER SET中删除'字符似乎没有任何改变.
我使用PDO连接到MySQL数据库.
编辑2:我正在使用XAMPP for Linux的MySQL版本5.1.30.
编辑3:SHOW VARIABLES LIKE '%character%'从PhpMyAdmin输出运行
character_set_client utf8
character_set_connection utf8
character_set_database latin1
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
character_sets_dir /opt/lampp/share/mysql/charsets/
Run Code Online (Sandbox Code Playgroud)
从我的PHP脚本(带有print_r)运行相同的查询输出: …
我想知道如何Subversion更改我的更改所显示的名称.
我刚刚开始使用Subversion.我正在使用它在XP笔记本电脑上版本控制代码,我总是以我妻子的名字登录.我希望subversion DB在我的名字下显示更改.
稍后我将复制数据库,以便整个房子可以访问它.我的妻子使用办公室电脑,她总是以我的名义登录.我可能会设置它,以便自动检查修改后的文档...最好是在她的名下.
最终我可能会在另一个用户名的Linux机器上使用它.
有没有办法修改用户环境来更改Subversion调用你的用户名?我希望设置SVN_USERNAME='Mark'会覆盖,但它通常会得到名称.
更新:看起来--usernameMichael提到的标志确实可以更改报告的名称"svn stat",即使对于本地文件:存储库也是如此.此外,它是粘性的,因此您无需为下一个命令指定它.我甚至重新启动它仍然使用"--username"我之前启动时的值.
Stack Overflow如何为那些没有上传图片或没有创建Gravatar图标的用户自动生成gravatars?
这些随机化身来自哪里,我如何为自己的网站生成它们?
我过去编写了一些Python工具来从Outlook联系人中提取数据.现在,我正在尝试修改我的Outlook联系人.我发现我的更改正在被Outlook注意到,但它们并没有坚持下去.我似乎在更新一些缓存,但不是真正的记录.
代码很简单.
import win32com.client
import pywintypes
o = win32com.client.Dispatch("Outlook.Application")
ns = o.GetNamespace("MAPI")
profile = ns.Folders.Item("My Profile Name")
contacts = profile.Folders.Item("Contacts")
contact = contacts.Items[43] # Grab a random contact, for this example.
print "About to overwrite ",contact.FirstName, contact.LastName
contact.categories = 'Supplier' # Override the categories
# Edit: I don't always do these last steps.
ns = None
o = None
Run Code Online (Sandbox Code Playgroud)
此时,我切换到Outlook,它打开到详细地址卡视图.
我查看联系人摘要(不打开它),类别不变(不刷新?).
我打开联系人,其类别有时会改变.(不确定何时,但感觉它与缓存有关.)如果它已经改变,它会在我关闭它时提示我保存更改这是奇怪的,因为我没有在Outlook UI中更改任何内容.
如果我退出并重新启动Outlook,则更改将会消失.
我怀疑我没有调用SaveChanges,但我看不到哪个对象支持它.
所以我的问题是:
python ×2
.net ×1
3d ×1
arguments ×1
asynchronous ×1
c# ×1
c++ ×1
command-line ×1
concurrency ×1
django ×1
encoding ×1
frameworks ×1
graphics ×1
gravatar ×1
iasyncresult ×1
mapi ×1
math ×1
mysql ×1
oop ×1
oracle ×1
outlook ×1
php ×1
svn ×1
tag-cloud ×1
updatexml ×1
username ×1
utf-8 ×1
winapi ×1
windows ×1
wpf ×1
xml ×1