我为每个网络通信创建一个线程,每当他们从客户端收到回复时,他们就会添加一个列表响应.我正在执行下面的任务,以查看是否有任何通信进入.它在屏幕上显示最新的通信.
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) 我有一个带有两个端点的控制器类
@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或网络浏览器来访问端点
回报
无参数测试
和
回报
用参数测试
但 swagger ui 仅显示不带参数的用户界面。
如果我将带有参数的请求的请求映射中的值更改为
@RequestMapping(
value= "/testbyparam",
params = {"param"},
method = RequestMethod.GET)
Run Code Online (Sandbox Code Playgroud)
Swagger UI 正确显示两个端点,但我不想根据 swagger 将显示或不会显示的内容来定义我的端点。
有什么方法可以让 swagger ui 正确显示具有匹配值但参数不同的端点?
编辑澄清:
端点工作得很好;/test 和 …
我正在为别人的代码编写单元测试,我不允许修改.
说我有:
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%以下的覆盖率.
我的域和日期字段已更新,我想搜索
@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) 我有一个阵列
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)
这给我的错误是每个案例的"一个恒定值". …