首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不同线程中的skpsmtpmessage

不同线程中的skpsmtpmessage
EN

Stack Overflow用户
提问于 2010-12-19 19:05:55
回答 2查看 569关注 0票数 1

我刚刚成功地在我的iPhone应用程序中实现了skpsmtpmessage。这可以很好地工作,但它在主线程上运行,导致UI锁定,直到操作完成。因此,我尝试将其移动到第二个线程:

代码语言:javascript
复制
[NSThread detachNewThreadSelector:@selector(launchJobWithJob:) toTarget:self withObject:jobDescription];

如果我这样做,这个类似乎马上就卡在连接上了,唯一的NSLog输出是:

代码语言:javascript
复制
C: Attempting to connect to server at: mail.example.com:25

如果我只是通过[self launchJobWithJob:jobDescription];来启动工作,它工作得很好,但正如我之前所说的,它会严重滞后。

我怎样才能让它在后台线程中工作?有没有人碰到过这个?

编辑:我也尝试过NSOperationQueue --同样的情况再次发生,只有日志输出,没有其他的!

代码语言:javascript
复制
NSOperationQueue*queue = [NSOperationQueue new];

NSInvocationOperation*operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(launchJobWithJob:) object:jobDescription];

[queue addOperation:operation];

[operation release];
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-22 22:26:47

我确信它在runloop上做网络连接的事情,所以让线程的runloop运行,直到操作完成。

代码语言:javascript
复制
[[NSRunLoop currentRunLoop] run];
票数 1
EN

Stack Overflow用户

发布于 2010-12-22 22:37:44

必须有一些竞争条件,你可以在你的launchJobWithJob方法中放置一些NSLog来检测哪个代码导致了问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4482636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档