小编Dam*_*ien的帖子

在C#中; 从后台线程检查更改的最有效方法是什么?

我为每个网络通信创建一个线程,每当他们从客户端收到回复时,他们就会添加一个列表响应.我正在执行下面的任务,以查看是否有任何通信进入.它在屏幕上显示最新的通信.

Task task = new Task(
(() =>
 {
    int i = 0;
    while (true)
    {
        if (responses.Count > i){
            Debug.WriteLine(responses[i]);
            int index = Form.ActiveForm.Controls.IndexOfKey("responseBox");
            Form.ActiveForm.Invoke((MethodInvoker) (() => Form.ActiveForm.Controls[index].Visible = true));
            Form.ActiveForm.Invoke((MethodInvoker) (() => Form.ActiveForm.Controls[index].Text = responses[i]));
            i++;
        }
    }
 }));
task.Start();
Run Code Online (Sandbox Code Playgroud)

我的问题是; 我有更好的方法吗?对于那些经常不会发生的事情来说,让任务继续工作似乎是错误的.

编辑:我对C#很新,所以如果有明显的东西,请不要犹豫,指出来.

更新:

根据来自MS的顺利绕线链接的精彩教程,我在List的Add函数中添加了一个简单的事件.如此:

public delegate void ChangedEventHandler(object sender, EventArgs e);

public class listWithChanges<T> : List<T> 
{
    public event ChangedEventHandler Changed;

    protected virtual void OnChanged(EventArgs e)
    {
        if (Changed != null)
            Changed(this, e);
    }

    public new void …
Run Code Online (Sandbox Code Playgroud)

c# multithreading task

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

如何让 Swagger UI 显示类似的 Spring Boot REST 端点?

我有一个带有两个端点的控制器类

@RestController
@RequestMapping
public class TestController {

  @RequestMapping(
          value= "/test",
          method = RequestMethod.GET)
  @ResponseBody
  public String getTest() {
    return "test without params";
  }

  @RequestMapping(
          value= "/test",
          params = {"param"},
          method = RequestMethod.GET)
  @ResponseBody
  public String getTest(@PathParam("param") int param) {
    return "test with param";
  }

}
Run Code Online (Sandbox Code Playgroud)

一种有参数,一种没有,两者都有效。

如果我使用curl或网络浏览器来访问端点

http://localhost:8081/测试

回报

无参数测试

http://localhost:8081/test?param=1

回报

用参数测试

但 swagger ui 仅显示不带参数的用户界面。

如果我将带有参数的请求的请求映射中的值更改为

  @RequestMapping(
          value= "/testbyparam",
          params = {"param"},
          method = RequestMethod.GET)
Run Code Online (Sandbox Code Playgroud)

Swagger UI 正确显示两个端点,但我不想根据 swagger 将显示或不会显示的内容来定义我的端点。

有什么方法可以让 swagger ui 正确显示具有匹配值但参数不同的端点?

编辑澄清:

端点工作得很好;/test 和 …

spring swagger spring-boot

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

如何在C#中模拟没有接口且没有虚拟方法的类?

我正在为别人的代码编写单元测试,我不允许修改.

说我有:

class BadClass
{
    public BadClass()
    {
        // the service isn't going to be running during testing
        // it also has no interface
        someFlag = AGloballyStoredService.getSomeFlag();
    }

    public bool someFlag;

}
Run Code Online (Sandbox Code Playgroud)

用于:

class AnotherBadClass
{
    public AnotherBadClass(BadClass badClass)
    {
        someFlag = badClass.someFlag;
    }
    public bool someFlag;
}
Run Code Online (Sandbox Code Playgroud)

说我想要测试:

public void AnotherBadClassConstructorTest()
{
    BadClass badClass = new BadClass();
    AnotherBadClass anotherBadClass = new AnotherBadClass(badClass);
    Assert.IsNotNull(anotherBadClass);
}
Run Code Online (Sandbox Code Playgroud)

我想模拟BadClass,但它没有接口,如果服务没有运行,它在构造函数中失败.

考虑到我无法修改我正在测试的代码,是否有一种直接的方法来使其工作?

如果归结为它,我可以告诉他们,他们必须让我修改现有的代码库或接受该模块的10%以下的覆盖率.

c# unit-testing

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

Crudrepository 如何按最后日期查找?

我的域和日期字段已更新,我想搜索

@Column(name = "updated")
Date updated;
Run Code Online (Sandbox Code Playgroud)

我有一个代表一天的 Java Date 对象,它是由我的端点控制器传入的。

Date day;
Run Code Online (Sandbox Code Playgroud)

和一个代表我的数据的 crudrepository

public interface DataRepository extends CrudRepository<Data, Long> {

   List<Data> findByLastUpdatedInDate(Date date);

}
Run Code Online (Sandbox Code Playgroud)

显然上面的方法不起作用,但是有没有类似的东西?或者我必须在手动搜索最后一个条目之间进行查找?

编辑:这就是我的一天;dateString 由控制器传入。

SimpleDateFormat dateFormatIn = new SimpleDateFormat("yyyy-MM-dd");
Date day = dateFormatIn.parse(dateString);
Run Code Online (Sandbox Code Playgroud)

java spring jpa spring-data-jpa spring-boot

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

如何使用字符串数组来处理C#中switch语句中的case?

我有一个阵列

    public static string[] commands =
    {   
        "command1",
        "command2",
        "command3",
        "command4",
        "command5",
        "command6",
        "command7"
    };
Run Code Online (Sandbox Code Playgroud)

我想在函数中使用数组

    public static bool startCommand (string commandName) {
        //stuff
        if (commandName == commands[0]) {
            //stuff
            return true;
        }
        else {
            //stuff
            switch (commandName) {
                case commands [1]:
                    //stuff
                    break;
                case commands [2]:
                    //stuff
                    break;
                case commands [3]:
                    //stuff
                    break;
                case commands [4]:
                    //stuff
                    break;
                case commands [5]:
                    //stuff
                    break;
                case commands [6]:
                    //stuff
                    break;
                default:
                    return false;
            }
            //do stuff
            return true;
        }
    }
Run Code Online (Sandbox Code Playgroud)

这给我的错误是每个案例的"一个恒定值". …

c# arrays

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