我正在多个数据库上执行数据更改,我想实现一个涵盖所有更改的事务.
这就是我目前拥有的:
try
{
db[1].begintransaction();
db[1].ExecuteNonQuery();
db[2].begintransaction();
db[2].ExecuteNonQuery();
...
db[N].begintransaction();
db[N].ExecuteNonQuery();
// will execute only if no exception raised during the process
for (int a = 0; a < N; a++)
{
db[a].Commit();// what if there is an error/exception here
}
}
catch
{
for (int a = 0; a < N; a++)
{
db[a].RollBack();
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,如果在a期间发生异常Commit()
(参见评论),上述情况将会非常失败.有没有更好的方法来实现这一目标?
PictureBox
我的Windows窗体应用程序上有一个.
我在其中加载了一张图片,并Paint
在代码中启用了该事件.它绘制一个矩形.
像这样:
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
Graphics gr = e.Graphics;
Pen p = new Pen(Color.Red);
p.Width = 5.0f;
gr.DrawRectangle(p, 1, 2, 30, 40);
}
Run Code Online (Sandbox Code Playgroud)
然后我点击"保存"按钮:
private void button2_Click(object sender, EventArgs e)
{
pictureBox1.Image.Save(@"C:\Documents and Settings\tr1g3800\Desktop\WALKING\30P\100000test.jpg",ImageFormat.Jpeg);
}
Run Code Online (Sandbox Code Playgroud)
但是保存的文件永远不会包含我绘制的矩形.
有谁有想法吗?
在Actionscript中,Unix时间戳(以毫秒为单位)可以这样获得:
public static function getTimeStamp():uint
{
var now:Date = new Date();
return now.getTime();
}
Run Code Online (Sandbox Code Playgroud)
该文件明确指出以下内容:
getTime():Number返回Date对象自1970年1月1日午夜(通用时间)以来的毫秒数.
当我跟踪它时,它返回以下内容:
824655597
Run Code Online (Sandbox Code Playgroud)
所以,824655597/1000/60/60/24/365 = 0.02年.这显然是不正确的,因为它应该是大约39年.
问题1:这里有什么问题?
现在,在PHP部分:我正在尝试以毫秒为单位获取时间戳.该microtime()
函数返回字符串(0.29207800 1246365903)或浮点数(1246365134.01),具体取决于给定的参数.因为我觉得时间戳很简单,所以我自己会这样做.但是现在我已经尝试并注意到了这个浮点数,并将它与我在Actionscript中的问题结合起来,我真的不知道.
问题2:如何让它返回Unix时间戳中的毫秒数?
时间戳应该很容易,我可能会遗漏一些东西......对不起.提前致谢.
编辑1:自己回答了第一个问题.见下文.
EDIT2:我自己也回答了第二个问题.见下文.48小时内无法接受答复.
在这里和网上进行了一些搜索并且还没有找到一个好的答案.我要做的是在C#中的同一个类中调用两次按钮.
这是我的情景 -
我有一个带有"Go"按钮的表单.当我第一次点击它时,它会通过一些'for'循环(不停)来显示颜色范围.同时我将button1.Text属性设置为"Stop".我希望能够第二次点击按钮,当发生这种情况时,我希望程序停止.基本上是一个走走停停的按钮.我知道如何使用2个按钮事件,但想使用1个按钮.
现在,结束程序的唯一方法是表单上的X按钮.
我尝试了不同的东西,到目前为止没有太多运气,所以想问这里的大师如何做到这一点.
顺便说一句,这是Head First Labs C#书籍练习的修改.
谢谢!
〜艾伦
如何最好地测试接收文件上传的控制器动作Zend_Test_PHPUnit_ControllerTestCase
?
理想情况下,$this->getRequest()->setPost()
会在数据数组中使用文件名,但似乎不支持.
我愿意在这个阶段在命令行上引导/运行我的应用程序并创建一个请求对象以传递给前端控制器.这会绕过Zend_Test_PHPUnit_ControllerTestCase
,但我随后可以检查文件是否通过$this->dispatch('/some/url')
ControllerTestCase中的后续文件正确上传.但是,我也对如何使用此方法将文件放入请求对象感到困惑.
我现在唯一能想到的就是通过指向app(APPLICATION_ENV='testing'
)的命令行启动HTTP服务器,并通过Zend的Http Client或CURL等进行文件上传.这并没有让我觉得非常优雅.
其他人不得不处理这个问题?
谢谢!
我刚看到来自MS语言团队的Luca Bolognese的采访,他提到Anders Hejlsberg认为开发人员应该更多地关注BCL(基类库,框架)而不是语言功能(C#,VB.NET).
每个开发人员都知道当前.net 3.5框架中的哪个类或接口?
在我的驱动程序的file_operations结构中,我有:
struct file_operations Fops = {
read: device_read,
write: device_write,
unlocked_ioctl: device_ioctl,
...
};
Run Code Online (Sandbox Code Playgroud)
即没有使用ioctl字段.这是否足以避免Big Kernel Lock并在没有任何同步的情况下进入device_ioctl()?或者我是否必须在代码的用户空间部分更改ioctl()调用?
在html中编写文档需要一些代码示例.做什么用的,应与被替换的字符&
和>
等?他们也应该在这种情况下进行编码吗?当我在<pre><code>
标签内部有这些字符时,它们就像我应该看到的那样显示出来.
在32位Linux内核上编译内核模块会导致
"__udivdi3" [mymodule.ko] undefined!
"__umoddi3" [mymodule.ko] undefined!
Run Code Online (Sandbox Code Playgroud)
在64位系统上一切都很好.据我所知,原因是32位Linux内核不支持64位整数除法和模数.
如何找到发出64位操作的代码.它们很难手动找到,因为我无法轻易检查"/"是32位宽还是64位宽.如果"正常"函数未定义,我可以grep它们,但这不可能在这里.还有另一种搜索引用的好方法吗?某种"机器代码grep"?
该模块由几千行代码组成.我真的不能手动检查每一行.
我需要从列表中的模糊列表中提取所有MP3标题.
使用Python,这对我很有用:
import re
for i in re.compile('mmc.+?mp3').findall(open("tracklist.txt").read()): print i
Run Code Online (Sandbox Code Playgroud)
我怎么能在Ruby中做到这一点?