对于其中一个副项目,我需要编写一个需要使用第三方INPROC COM对象的C#应用程序.不幸的是,C#不是我的主要编程语言,所以我的知识有点受限.有关如何从C#访问COM对象的任何好的教程吗?使用此第三方COM对象需要我创建指定COM接口的实现,并将该实现提供给COM对象以使其起作用.
Ruby 1.9应该具有本机线程,如果某些线程进入本机代码(如GUI工具包主循环或某些Ruby lib的C实现),GIL应该会解除.
但是,如果我开始关注在主线程中显示GUI的简单代码示例并在单独的线程中执行一些基本的数学运算 - GUI将严重挂起,尝试调整窗口大小以便自己查看.我已经检查过不同的GUI工具包,Qt(qtbindings gem) - 它的行为完全相同.在Windows 7和OSX 10.7上使用Ruby 1.9.3-p0进行了测试
require 'tk'
require 'thread'
Thread.new { loop { a = 1 } }
TkRoot.new.mainloop()
Run Code Online (Sandbox Code Playgroud)
Python中的相同代码工作正常,没有任何GUI挂起:
from Tkinter import *
from threading import *
class WorkThread( Thread ) :
def run( self ) :
while True :
a = 1
WorkThread().start()
Tk().mainloop()
Run Code Online (Sandbox Code Playgroud)
我做错了什么?
UPDATE
看来在Ubuntu linux上没有这样的问题,所以我的问题主要是关于Windows和OSX.
UPDATE
有人指出OSX上没有这样的问题.所以我汇编了一个分步和重现问题的分步指南:


test.rb使用我的示例中的代码创建一个文件并运行它.尝试调整窗口大小 - 你会看到可怕的滞后.从代码中删除线程,启动并尝试调整窗口大小 - 滞后消失.我录制了这个测试的视频.Ruby编译命令: …
是否可以轻松地将CherryPy用作将.html在某个文件夹中显示文件的Web服务器?所有CherryPy入门文档都声明内容是动态生成的:
import cherrypy
class HelloWorld(object):
def index(self):
return "Hello World!"
index.exposed = True
cherrypy.quickstart(HelloWorld())
Run Code Online (Sandbox Code Playgroud)
是否有任何简单的方法来index.html代替HelloWorld.index()方法?
easy_install python扩展允许从控制台安装python egg,如:
easy_install py2app
Run Code Online (Sandbox Code Playgroud)
但是可以在python脚本中访问easy_install功能吗?我的意思是,不调用os.system("easy_install py2app"),而是将easy_install作为python模块导入并使用它的本机方法?
Python有能力通过运行它的setup.py脚本来"伪装"一个包develop而不是install.这会修改python环境,因此可以从它的当前位置导入包(它不会被复制到site-package目录中).这允许开发其他包使用的包:源代码被修改到位,并且通过简单的更改可用于其余的python代码import.
一切正常,除了该setup.py develop命令创建一个.egg-info文件夹与元数据相同的文件夹setup.py.混合源代码和临时文件不是一个好主意 - 需要将此文件夹添加到从vcs和结束备份系统开始的多个工具的"忽略"列表中.
是否可以使用setup.py develop但.egg-info在其他地方创建目录,因此原始源代码不会受到临时目录和文件的污染?
我在Python中的冒险经历继续,我最喜欢的书再次沉默.Python提供了一种内置方法,使用'in'关键字测试变量是否在可迭代对象中:
if "a" in "abrakadabra" :
print "it is definitely here"
Run Code Online (Sandbox Code Playgroud)
但是有可能测试列表中是否有多个项目(任何一个)?目前,我正在使用下面的语法,但它有点长:
if "// @in " in sTxt or "// @out " in sTxt or "// @ret " in sTxt or <10 more>
print "found."
Run Code Online (Sandbox Code Playgroud)
当然正则表达式可以提供帮助,但使用正则表达式会占用大量代码,并且不会像"a in b"那样清晰.还有其他Pythonic方式吗?
在C#中是否可以将一个事件连接到另一个事件,因此发出第一个事件会发出第二个事件?我能看到的唯一方法是创建一个将发出第二个事件并将第一个事件连接到此函数的存根函数.编译器不希望将事件或事件连接到调用另一个事件的anonymouse函数/ lambda:
class Ui { public event EventHandler OnClick; }
class Logic { public event EventHandler OnExit; }
var ui = new Ui();
var logic = new Logic();
ui.OnClick += logic.OnExit; // Not working.
ui.OnClick += ( a, b ) => logic.OnExit; // Not working either :(.
Run Code Online (Sandbox Code Playgroud)
也许它是一些可用的装饰器或一些黑魔法允许链接没有存根函数的事件?
目前,为了评估Emacs中的elist,我需要将光标定位在最后一个括号上并发出C-x e.
是否可以将整个缓冲区评估为单个elisp程序而无需定位光标?
我需要在.pro文件中指定不同的输出和中间文件夹,以便进行调试和发布构建.我创建了一个以下测试.pro文件:
release {
message( "release" )
}
debug {
message( "debug" )
}
Run Code Online (Sandbox Code Playgroud)
但是使用"debug"构建在Qt Creator中编译此.pro文件会导致以下输出:
Project MESSAGE: release
Project MESSAGE: debug
Run Code Online (Sandbox Code Playgroud)
似乎"调试"和"释放"条件都设置为TrueO_O.是否有可能以某种方式在qmake中单独处理调试和发布版本?