小编Chr*_*s E的帖子

如何在导轨3中使用多线程?

我使用动作邮件通过邮戳向用户发送邮件.这是我在控制器中的代码:

@users = User.where(some condition)
@product = Product.find_by_name(some name).first
for user in @users
  UserMailer.new_product_arrival(user, @product, home_url).deliver
end
Run Code Online (Sandbox Code Playgroud)

这是我的user_mailer.rb

def new_product_arrival(user,product,home_url)
  @from         = Settings.mailer_from_address
  @recipients   = user.login
  @sent_on      = Time.now
  @user = user
  @product = product
  @content_type = "text/html"
  @home_url = home_url
end
Run Code Online (Sandbox Code Playgroud)

问题是,如果有超过10个用户,由于for循环需要很长时间.我需要知道我们是否可以通过使用多线程或后台作业来处理这个问题.我不想使用后台工作,但任何人都可以告诉我如何使用多线程实现上述功能.

我使用ruby 1.8.7和rails 3.0.7

multithreading actionmailer postmark ruby-on-rails-3

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

使用键盘时,调试Visual Studio 2010中的Silverlight会冻结

首先,我想谈谈"等一下"的问题.

  • 是的,我已经阅读了所有具有类似标题和主题的帖子.
  • 是的,我使用的是最新版本的SP1以及可能与此问题相关的任何可能的修补程序.

所以,具体而言,这是我的问题:

当我调试Silverlight应用程序并且遇到断点时,只要我使用鼠标,一切正常.我可以继续,步骤,停止调试,禁用和启用断点 - 只要我用鼠标这样做.

但是当我使用键盘时,Visual Studio会冻结几秒钟,有时会超过一分钟.这是键盘的任何用途.但经过一段时间后,它开始工作正常,直到调试会话结束.但是下一次调试会话(无论我是否使用相同的Casini实例)都会做同样的事情.

当我说任何键盘使用时,我的意思是.F5(继续),Shift-F5(停止调试),F10(跳过),以及在立即窗口中键入或甚至按下ALT键以突出显示菜单.

例如,如果我尝试在立即窗口中键入内容,它会冻结大约15秒然后显示第一个键并重复该模式大约5次,直到它释放并且一切都很好.

当我说"冻结"时,我不是只谈论Visual Studio,但它会挂起整个操作系统,除了我移动鼠标的能力.即便如此,鼠标光标仍然保持冻结状态,无论程序结束,例如文本选择器.

它只发生在Silverlight上,我使用哪个版本并不重要.

这是我正在运行的:

  • Windows 7 Professional 64位,包括所有最新更新,12 GB RAM和1.5 TB HD.
  • Visual Studio 2010 Ultimate,包含所有最新更新.

所有软件都是合法的,我已经尝试删除和/或禁用可以删除或禁用的所有内容,包括扩展.我使用了Sysinternals的Process Explorer来杀死或阻止我能做的一切.我也尝试过一个非常简单的Silverlight应用程序,只有一行代码不能访问任何东西.

编辑:忘记提及我也没有加载符号,通常会超出"我的代码",我已经尝试了我能想到的每个调试设置.并且Intellitrace也被关闭(因为我确实拥有Ultimate),但这也没有任何区别.

更新(11月18日):它变得越来越奇怪.我确定只有在Visual Studio具有焦点时才会发生临时冻结.当VS(在超简单的Silverlight应用程序中)进入调试模式时,任何键盘访问AT ALL都会产生相同的效果.所以,它似乎(以某种方式)与我的Windows设置相关(至少部分),与我在评论中的断言相反,但我无法理解如何.如果其他程序在冻结时正在做某事,那么延迟会更长(这会使症状产生一定的意义).我还是完全失去了.

任何人有任何想法或以前见过这个?真的很令人沮丧.

debugging silverlight 64-bit visual-studio-2010

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

非托管内存泄漏

我正在使用一个使用BitmapSource的WPF应用程序,但我需要做一些操作,但我需要对System.Drawing.Bitmaps进行一些操作.

应用程序的内存使用在运行时会增加.

我已将内存泄漏范围缩小到此代码:

private BitmapSource BitmaptoBitmapsource(System.Drawing.Bitmap bitmap)
{
            BitmapSource bms;
            IntPtr hBitmap = bitmap.GetHbitmap();
            BitmapSizeOptions sizeOptions = BitmapSizeOptions.FromEmptyOptions();
            bms = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(hBitmap, IntPtr.Zero, Int32Rect.Empty, sizeOptions);
            bms.Freeze();
            return bms;
}
Run Code Online (Sandbox Code Playgroud)

我认为这是非托管内存没有正确处理,但我似乎无法找到手动执行它.在此先感谢您的帮助!

亚历克斯

c# memory wpf unmanaged bitmap

7
推荐指数
1
解决办法
2885
查看次数

使用命令行xcodebuild指定PROVISIONING_PROFILE时出错

我无法覆盖Xcode Build Settings中指定的代码签名标识和配置文件,并使用我通过命令行指定的配置文件.

我现在正在做:

xcodebuild -target "#{XTARGET}" -sdk iphoneos#{SDK_VERSION} -configuration #{config} CODE_SIGN_IDENTITY="#{DEVELOPER}"
Run Code Online (Sandbox Code Playgroud)

如果Xcode Build Settings设置为"dont code sign",则此功能完美无缺.但如果它被设置为我指定为开发者之外的身份,则失败.请注意,我不想打开Xcode来生成使用此脚本的构建.但我目前必须确保Build Settings说"不要编码签名".

我想我需要找到一种方法来通过xcodebuild指定配置文件,但是当我写的时候:

xcodebuild -target "#{XTARGET}" -sdk iphoneos#{SDK_VERSION} -configuration #{config} CODE_SIGN_IDENTITY="#{DEVELOPER}" PROVISIONING_PROFILE="#{PROFILE}"
Run Code Online (Sandbox Code Playgroud)

命令失败,并说找不到配置文件.即使它在适当的地方.我已经尝试指定完整路径,相对路径,只是文件名.当我在xcrun命令中指定此配置文件时,它可以工作.但是xcodebuild是不行的.

有任何想法吗?

xcode xcodebuild provisioning-profile

5
推荐指数
1
解决办法
6092
查看次数

C stat 结构没有 st_ctime 字段,只有 st_ctim

我现在已经用谷歌搜索了大约两个小时,但找不到任何有帮助的答案。

手册页中指定的“stat”定义表明存在 st_ctime 字段。

       struct stat {
           dev_t     st_dev;     /* ID of device containing file */
           ino_t     st_ino;     /* inode number */
           mode_t    st_mode;    /* protection */
           nlink_t   st_nlink;   /* number of hard links */
           uid_t     st_uid;     /* user ID of owner */
           gid_t     st_gid;     /* group ID of owner */
           dev_t     st_rdev;    /* device ID (if special file) */
           off_t     st_size;    /* total size, in bytes */
           blksize_t st_blksize; /* blocksize for file system I/O */
           blkcnt_t  st_blocks;  /* …
Run Code Online (Sandbox Code Playgroud)

c ubuntu system-calls stat

5
推荐指数
1
解决办法
3793
查看次数

小于或大于SQL Server中索引的运算符问题

我发现如果查询小于或大于运算符的表,则sql server索引不能正常工作。

假设我有一个仅包含2列的简单表(TestTable),如下所示:

Column Name, column type, primary Key, index
iID,         int,         yes,         cluster index
iCount,      int,         no,          non-cluster index
name,        nvarchar(255), no,        no index
Run Code Online (Sandbox Code Playgroud)

现在,我以此查询表:

SELECT * FROM TestTable,其中iCount = 10。

很好,Sql服务器将对列iCount使用非群集索引来检索结果。

但是,如果我以此查询表:

SELECT * FROM TestTable,其中iCount <10,

SQL Server将对群集索引进行索引扫描以获取iID以检索结果。

我想知道为什么当我在查询中使用小于或大于运算符时,sql server无法使用正确的索引。

sql sql-server-2008

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

如何在C函数中更改参数的地址?

在C++中,我可以这样做:

    #include <stdio.h>
    void ChangeAddress(char *&para)
    {
         char *temp = "123456";
         para = temp;
    }

    int main()
    {
    char *para = "abcdef";
    ChangeAddress(para);
    printf("%s\n",para);//123456
    return 0;
    }
Run Code Online (Sandbox Code Playgroud)

那么在C中有任何替代方式吗?

c c++

0
推荐指数
1
解决办法
127
查看次数