小编Sim*_*son的帖子

异步作业取消导致父作业取消

我尝试运行两个异步作业。

有一个按钮,单击后会取消其中一项作业。但我注意到当我这样做时,其他工作也会被取消。

发生了什么?

class SplashFragment : BaseFragment(R.layout.fragment_splash), CoroutineScope by MainScope() {

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)

    launch {
        val countdown = async { countDown() }
        val ipAndMaintain = async { checkIPAndMaintain() }

        btnSkip.onClick {
            countdown.cancel() // cancel countdown
            btnSkip.isVisible = false
            if (!ipAndMaintain.isCompleted) {
                showLoadingDialog()
            }
        }
        countdown.await()
        startOtherPage(ipAndMaintain.await())
    }
}

private suspend fun countDown() {
    var time = 3
    while (time >= 0) {
        btnSkip.text = getString(R.string.skip, time)
        delay(1000)
        yield()
        time--
    }
}

private suspend …
Run Code Online (Sandbox Code Playgroud)

kotlin kotlin-coroutines

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

C++ 中的模式识别

我有一个简单的模板灰度图像,上面有白色背景和黑色形状,并且我有几个类似的测试图像,我想比较这两个图像并查看模板是否与任何测试图像匹配。您能否建议一个简单(易于使用)的 C++ 模式识别库,它可以获取两个图像并进行比较并显示结果?

c++ pattern-recognition image-processing

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

PHP中的字符串是字符数组吗?

就像在 C 中一样,我可以将字符串用作数组吗?

例如:

$a = "abcd";
for ($b = 0; $b <= 3; $b++) {
  echo $a[$b];
}
Run Code Online (Sandbox Code Playgroud)

PHP 中的字符串是数组,还是像 C 中那样基于数组?

php c arrays string

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

VS Code $msCompile ProblemMatcher 不适用于相对文件路径

我需要使用 Visual Studio Code 编译 .NET 解决方案。我的任务内部tasks.json声明如下:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "command": "dotnet",
            "type": "process",
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "args": [
                "build",
                "${workspaceFolder}"
            ],
            "problemMatcher": "$msCompile"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

现在按Ctrl+B我可以成功编译我的整个解决方案。不幸的是dotnet build,似乎输出相对文件路径,并且从文档来看,问题$msCompile匹配器仅适用于绝对路径。其效果是,当出现错误时,在“问题”面板中单击它会产生错误Unable to open XYZ.cs: File not found

如何正确配置dotnet buildProblemMatcher 使其工作?

.net visual-studio-code dotnet-cli vscode-problem-matcher

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

将列附加到 ADO 记录集

我正在尝试将列添加到 VB6 中的 ADO 记录集。我只想在表的末尾添加 4 列。这是一个我们经常使用的表,但我们经常删除其中的所有数据,并用我们想要的下一个信息重新填充它,基本上只是将它用作临时保存数据的一种手段。

我发现因为它是 ADO,所以我应该能够使用以下内容:

 with rs
     .fields.append "column name", "enum dataType"
 end with
Run Code Online (Sandbox Code Playgroud)

从阅读和实验来看,似乎必须关闭记录集才能添加列。

这是我的代码:

rs.Open "MeterReads", DataEnvironment7.cnPTracker, adOpenStatic, adLockOptimistic, adCmdTable
' 2019-11-4 Adding in a section to accomadate for days to depeletion
If gbEnableD2D Then
    bExists = False
    With rs
        For Each fField In rs.Fields
            If UCase(fField.Name) = UCase("eddB") Then
                bExists = True
                Exit For
            End If
        Next
        If bExists = False Then
            .Close
            .Fields.Append "eddB", adDate
            .Fields.Append "eddC", adDate
            .Fields.Append "eddM", adDate
            .Fields.Append …
Run Code Online (Sandbox Code Playgroud)

vb6 ado

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

如何创建一个接受 sqlx 数据库池和事务的 actix-web 服务器?

我正在尝试使用actix-websqlx设置一个 Web 应用程序,我可以在其中进行具有自己的 Web 服务器和数据库事务的测试。我尝试设置我的服务器创建,以便它接受数据库(Postgres)池或使用Executor特征的事务。虽然我在编译应用程序代码和测试时遇到了一些问题:

// main.rs

use std::net::TcpListener;

use actix_web::dev::Server;
use actix_web::{web, App, HttpServer, Responder};
use sqlx::PgPool;

async fn create_pool() -> PgPool {
    PgPool::connect("postgres://postgres:postgres@localhost:5432/postgres")
        .await
        .expect("Failed to create pool")
}

async fn index() -> impl Responder {
    "Hello World!"
}

pub fn create_server<'a, E: 'static>(
    listener: TcpListener,
    pool: E,
) -> Result<Server, std::io::Error>
where
    E: sqlx::Executor<'a, Database = sqlx::Postgres> + Copy,
{
    let server = HttpServer::new(move || App::new().data(pool).route("/", web::get().to(index)))
        .listen(listener)?
        .run();
    Ok(server)
} …
Run Code Online (Sandbox Code Playgroud)

types lifetime rust actix-web rust-sqlx

2
推荐指数
2
解决办法
1682
查看次数

为什么我的输出末尾有 % 符号?

每次我在输出结束时得到这个符号。这仅发生在 VS Code 中。

在此处输入图片说明

zsh fish visual-studio-code

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

返回变量地址的函数如何返回零?

#include<stdio.h>

int *addressof();

int main()

{               
    int *p=addressof();
    printf("%u",p);
    return 0; 
}            
int *addressof()
{
    int x=9;
    
    return &x;
}
Run Code Online (Sandbox Code Playgroud)

输出:

0
Run Code Online (Sandbox Code Playgroud)

变量的地址可以为零吗?是否可以?

c pointers

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

将结构与String匹配的模式

是否可以匹配String字段?我不能使这个代码工作.

struct Foo {
    x: int,
    y: int,
    str: String
}

pub fn main() {
    let a = Foo { x: 1, y: 2 , str: "Hi".to_string()};
    match a {
        Foo { x: x, y: y, str: "Hi".to_string() } => println!("Found {}, {}", x, y),
        _ => {}
    }
}
Run Code Online (Sandbox Code Playgroud)

给出了这个错误:

<anon>:10:36: 10:37 error: expected one of `,` or `...`, found `.`
<anon>:10         Foo { x: x, y: y, str: "Hi".to_string() } => println!("Found {}, {}", x, y),
                                             ^
Run Code Online (Sandbox Code Playgroud)

string pattern-matching rust

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

STM32F401RE-Nucleo LED 和 BUTTON 的示例

我正在尝试在我的新 Nucleo 板上运行一个简单的程序,

我编写这个程序是为了在按下用户按钮(蓝色按钮)时打开和关闭绿色 LED,

#include "stm32f4xx.h"
#include "stm32f4xx_nucleo.h"
#include "system_stm32f4xx.h"
#include "stm32f4xx_hal_gpio.h"
#include "stm32f4xx_hal_rcc.h"

GPIO_InitTypeDef GPIO_InitStructure; 

int main(void) {

    HAL_Init(); 

    __GPIOA_CLK_ENABLE();
    GPIO_InitStructure.Pin   = GPIO_PIN_5;
    GPIO_InitStructure.Mode  = GPIO_MODE_OUTPUT_PP;    
    GPIO_InitStructure.Pull  = GPIO_PULLUP;
    GPIO_InitStructure.Speed = GPIO_SPEED_HIGH;  
    HAL_GPIO_Init(GPIOA, &GPIO_InitStructure);    

    __GPIOC_CLK_ENABLE();
    GPIO_InitStructure.Pin   = GPIO_PIN_13;
    GPIO_InitStructure.Mode  = GPIO_MODE_INPUT;
    GPIO_InitStructure.Pull  = GPIO_PULLDOWN;
    GPIO_InitStructure.Speed = GPIO_SPEED_FAST;
    HAL_GPIO_Init(GPIOC, &GPIO_InitStructure);

    while (1) {
        if (HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13)) {         
            HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET); 
        } else {
            HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但我得到错误的结果:

  • 当我按下用户的按钮时,什么也没有发生,
  • 当我一直按下用户的按钮并重新启动(通过按下黑色按钮)时,我得到了很好的结果,

好像程序只在第一次运行时检查蓝色按钮的状态,我不知道为什么,

如果您对问题的根源有任何想法,或者您有一个正在运行的程序可以切换 LED 按钮按下,请帮助我。

stm32

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