我厌倦了在目标C中搜索符号^的含义.我已经在许多项目中看到过它,尤其是在后台运行任务中.我将链接
http://developer.apple.com/library/ios/#samplecode/StitchedStreamPlayer/Introduction/Intro.html#//apple_ref/doc/uid/DTS40010092
,MyStreamingMovieViewController.m你可以在里面找到以下内容 - (IBAction)endScrubbing:(id)sender method.
timeObserver = [[player addPeriodicTimeObserverForInterval:CMTimeMakeWithSeconds(tolerance, NSEC_PER_SEC) queue:dispatch_get_main_queue() usingBlock:
^(CMTime time)
{
[self syncScrubber];
}] retain];
}
Run Code Online (Sandbox Code Playgroud)
- (void)applicationDidEnterBackground:(UIApplication *)application
{
UIApplication* app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
// Clean up any unfinished task business by marking where you.
// stopped or ending the task outright.
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
// Start the long-running task and return immediately.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// Do the …Run Code Online (Sandbox Code Playgroud) iphone objective-c background-process ios objective-c-blocks
我试图在bash shell中并行运行3个命令:
$ (first command) & (second command) & (third command) & wait
Run Code Online (Sandbox Code Playgroud)
这个问题是,如果first command失败,例如,退出代码是0(我猜因为wait成功).
期望的行为是,如果其中一个命令失败,退出代码将为非零(理想情况下,其他正在运行的命令将被停止).
我怎么能实现这个目标?
请注意,我想并行运行命令!
即使我的应用程序已关闭,我也试图在Android通知栏中显示通知.
我试过搜索,但我没有找到帮助的运气.
一个例子是新闻应用程序.即使手机屏幕关闭或新闻应用程序关闭,它仍然可以发送最近新闻的通知并将其显示在通知栏中.
我如何在自己的应用程序中执行此操作?
我想在ASPNET Core中实现一个可以按需停止和启动的定期(定时)IHostedService实例.我的理解是IHostedService是由应用程序启动时的框架启动的.
但是,我希望能够"手动"启动/停止服务,也许可以通过UI使用开/关切换.理想情况下,"关闭"状态将处置当前正在运行的服务,然后"开启"状态将创建新实例.
我在这里阅读了MS文档:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/hosted-services? view = aspnetcore- 2.1.
我最初的想法是获取正在运行的服务的实例,然后调用public StopAsync(CancellationToken token)方法.然而,当涉及到我应该传递哪个令牌时,我有点卡住了,对于该StartAsync(CancellationToken cancellationToken)方法也可以这样说.
关于如何做到这一点的任何想法,或者它是否可取?我的方法是否违反了ASPNET Core中托管服务的预期设计?
编辑7.27.2018
因此,经过一些研究(也就是实际阅读文档:D)后,托管服务StartAsync/StopAsync方法确实意味着与应用程序的生命周期一致.注册的IHostedServices似乎没有添加到DI容器中以注入其他类.
因此,我认为我最初的想法不会起作用.现在我用配置依赖项(IOptions<T>)注册了我的服务,可以在运行时更新.当托管服务正在处理时,它将检查配置是否应该继续,否则它将等待(而不是停止或处置托管服务).
我很快就会将此标记为我的答案,除非我听到其他一些想法.
我不明白这两个 API 之间有什么区别。我的意思是什么时候使用第一个。为什么有 JobIntentService ?提前致谢
java android background-process android-intentservice jobintentservice
概观
想要调用带有参数的Powershell脚本,在后台运行每个作业,并向我显示详细输出.
我遇到的问题
该脚本似乎正在运行,但我希望通过在后台作业运行时流式传输结果来确认这一点.
码
###StartServerUpdates.ps1 Script###
#get list of servers to update from text file and store in array
$servers=get-content c:\serverstoupdate.txt
#run all jobs, using multi-threading, in background
ForEach($server in $servers){
Start-Job -FilePath c:\cefcu_it\psscripts\PSPatch.ps1 -ArgumentList $server
}
#Wait for all jobs
Get-Job | Wait-Job
#Get all job results
Get-Job | Receive-Job
Run Code Online (Sandbox Code Playgroud)
我目前看到的是:
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
23 Job23 Running True localhost #patch server ...
25 Job25 Running True localhost #patch server …Run Code Online (Sandbox Code Playgroud) 更新14/08 - 3 - 找到真正的解决方案:
您可以在下面的答案中查看解决方案!
更新16/06 - 2 - 可能是解决方案:
正如Sandy Chapman在回答中的评论中所说的那样,我现在可以使用这种方法在扫描开始时检索我的外围设备:
- (NSArray<CBPeripheral *> * nonnull)retrievePeripheralsWithIdentifiers:(NSArray<NSUUID *> * nonnull)identifiers
Run Code Online (Sandbox Code Playgroud)
我实际上是想通过在扫描开始时让我的外围设备恢复并在需要时启动连接(即使它不在范围内)来使其工作.iOS将保持活着,直到找到我正在寻找的设备.
还请注意,iOS 8.x中可能存在一个错误,如果在后台有另一个使用蓝牙的发布版本的应用程序,则会不时通过扫描(我得到的消失回调)来保持应用程序的调试版本.
更新16/06:
所以我检查了retrievePeripheralsWithServices,如果在我开始扫描时连接了任何设备.当我得到错误时,我启动应用程序和我做的第一件事
- (void) applicationDidBecomeActive:(UIApplication *)application
Run Code Online (Sandbox Code Playgroud)
是检查返回数组的大小.它总是0,每次我得到错误.如果我的设备在当前运行中之前没有建立任何连接,也会发生错误.当我收到另一台设备的错误时,我也能看到我的设备广告并用第二台设备触发命令.
更新10/06:
更新08/06:
原始问题
我目前正在开发一个处理与BLE设备通信的应用程序.我的一个限制是,只有在必须发送命令或读取数据时才必须连接到此设备.我必须在完成后尽快断开连接,以允许其他潜在用户也这样做.
该应用程序的一个功能如下:
目标是在用户进入范围时触发此设备.它可能会在超出范围几分钟后发生几个小时,这取决于我的用户习惯.
一切都以这种方式运作良好,但有时(似乎在随机时间发生),扫描类型"冻结".我的过程做得很好,但经过几次,我看到我的应用程序扫描,但我的didDiscoverPeripheral:回调从未被调用,即使我的测试设备正好在我的BLE设备前面.有时它可能需要一段时间来检测它,但在这里,几分钟后没有任何反应.
我以为iOS可能已经杀死我的应用程序以声明内存,但当我关闭和蓝牙时,centralManagerDidUpdateState:被称为正确的方式.如果我的应用程序被杀,那不应该是这样吗?如果我打开我的应用程序,扫描将重新启动,它将恢复生机.我还检查了iOS在180秒的活动后没有关闭我的应用程序,但事实并非如此,因为它在这段时间后运行良好.
我已经建立了我的.plist有正确的设置(蓝牙中央在UIBackgroundModes).管理所有BLE处理的我的班级作为单身人士存储在我的AppDelegate中,可通过我的所有应用程序访问.我也测试过切换我正在创建这个对象的地方.目前我正在应用程序中创建它:didFinishLaunchingWithOptions:方法.我试着将它放在我的AppDelegate init中:但是如果我这样做的话,每次我在后台时扫描都会失败.
我不知道我的代码的哪一部分可以告诉你,以帮助你更好地理解我的过程.以下是一些可能有用的示例.请注意," AT_appDelegate "是一个maccro,以便访问我的AppDelegate.
// Init of my DeviceManager class that handles all BLE processing …Run Code Online (Sandbox Code Playgroud) 你如何http-server从npm脚本开始后台,以便另一个npm脚本,如使用jsdom的Mocha测试,可以发出HTTP请求http-server?
该http-server软件包安装时:
npm install http-server --save-dev
Run Code Online (Sandbox Code Playgroud)
该package.json文件包含:
"scripts": {
"pretest": "gulp build-httpdocs",
"test": "http-server -p 7777 httpdocs/ && mocha spec.js"
},
Run Code Online (Sandbox Code Playgroud)
运行npm test成功启动http-server,但当然命令在显示后挂起:
Starting up http-server, serving httpdocs/
Available on:
http://127.0.0.1:7777
http://192.168.1.64:7777
Hit CTRL-C to stop the server
Run Code Online (Sandbox Code Playgroud)
是否有一种简单的方法来启动Web服务器,因此它不会阻止Mocha测试?
额外奖励:http-server摩卡测试结束后你如何关闭?
我想在 ASP.NET Core 2.1 中运行后台作业。它必须每 2 小时运行一次,并且需要访问我的 DI 容器,因为它将在数据库中执行一些清理工作。它需要async并且应该独立于我的 ASP.NET Core 2.1 应用程序运行。
我看到有一个IHostedService,但 ASP.NET Core 2.1 还引入了一个名为的抽象类BackgroundService,它为我做了更多的工作。看起来不错,我想用它!
不过,我一直无法弄清楚如何运行源自BackgroundService计时器的服务。
我是否需要ExecuteAsync(token)通过记住它上次运行的时间并确定这是否是 2 小时来配置它,或者是否有更好/更清晰的方法来说明它必须每 2 小时运行一次?
另外,我解决问题的方法是否正确BackgroundService?
谢谢!
编辑:
将此发布在MS 扩展存储库上
c# background-process background-service asp.net-core asp.net-core-2.1
android ×3
asp.net-core ×2
c# ×2
ios ×2
iphone ×2
objective-c ×2
bash ×1
exit-code ×1
flutter ×1
httpserver ×1
java ×1
javascript ×1
node.js ×1
npm ×1
powershell ×1
rest ×1
service ×1
start-job ×1