是否可以测试任何访问winform控件的方法?以下方法访问表单上的一系列控件中的Enabled属性.不幸的是我不知道如何对它进行单元测试/如果可能的话.
我非常欣赏一些指示.
public void AccessToCsvFileVerificationInputs(bool access)
{
btnSelectCSVFilePath.Enabled = access;
nudNumberOfColumns.Enabled = access;
cbCurrencyPair.Enabled = access;
foreach (Control input in tlpColumnDataTypes.Controls)
{
input.Enabled = access;
}
foreach (Control input in tlpColumnNames.Controls)
{
input.Enabled = access;
}
nudInitialRow.Enabled = access;
nudFinalRow.Enabled = access;
btnSelectErrorLogFilePath.Enabled = access;
}
Run Code Online (Sandbox Code Playgroud) 如果线程正在访问全局内存,为什么它要访问很大的块?这个大块存储在哪里?
如果您以合并的方式从全局内存中读取内容,那么将全局内存的公共块复制到共享内存中是否会有所帮助,或者没有任何改善。
即:如果每个线程都在读取下一个5、10或100个内存位置并取平均值,如果您可以将全局内存中的X点块放入共享内存中,那么您是否可以编写一条if语句来说明是否要寻找一个从共享内存而不是全局内存中读取这些内存值中的哪一个?我假设翘曲发散度的损失将小于每次从全局内存读取的次数。

我在向GPU分配包含多个数组的结构时遇到了一些问题.在第二个代码块中我得到一个错误:
SimpleDataStructure[] dev_SDS = _gpu.CopyToDevice(SDS);
有谁知道为什么?从我可以看到CopyToDevice()不支持结构作为参数.我可能会遗漏一些东西,所以在任何情况下都会感谢一些帮助.
结构声明:
[Cudafy]
public struct SimpleDataStructure
{
public float[] AreaCode;
public float[] Number;
public SimpleDataStructure(int x)
{
AreaCode = new float[x];
Number = new float[x];
}
}
Run Code Online (Sandbox Code Playgroud)
我班级方法中的代码:
Public class TaskManager
{
private static GPGPU _gpu;
private SimpleDataStructure SDS;
public void PreparationForTasks()
{
DataRetrieval();
SDS = new SimpleDataStructure(_entity.Data.Count - 1);
CudafyModule km = CudafyTranslator.Cudafy();
_gpu = CudafyHost.GetDevice(eGPUType.Cuda);
_gpu.LoadModule(km);
//Loaded SimpleDataStructure into same module.
km = CudafyTranslator.Cudafy(typeof(SimpleDataStructure));
_gpu.LoadModule(km, false);
//Getting error on following line.
SimpleDataStructure[] dev_SDS …Run Code Online (Sandbox Code Playgroud) 我正在尝试运行我的第一个cudafy项目,但我在以下行中收到以下错误:
CudafyModule km = CudafyTranslator.Cudafy();
Run Code Online (Sandbox Code Playgroud)
下面是我收到的确切错误消息的屏幕截图.
我运行了Cudafy附带的示例项目,它们运行正常,所以我不明白为什么它说找不到编译器.我已将Cudafy.net添加到参考文献中,请参见下面的屏幕截图,所有信息与示例项目完全相同,位于图像的右侧,并且可以正常工作.
有人有主意吗??
编辑
似乎已经在SO上回答了类似的问题,但我不明白路径环境变量在哪里.
编辑2
以下是cl.exe我发现的以下内容.我不确定要使用哪一个.我正在运行英特尔处理器,所以我倾向于最低处理器,但这只是猜测.
我正在努力解决一些问题,我不知道如何做以下事情
问:找到两台或更多台PC之间相同的硬盘大小.
它在本网站上的q15 .
数据库方案由四个表组成:
Product(maker, model, type)
PC(code, model, speed, ram, hd, cd, price)
Laptop(code, model, speed, ram, hd, screen, price)
Printer(code, model, color, type, price)
Run Code Online (Sandbox Code Playgroud)
任何指针将不胜感激.
编辑:这是pc表中所有硬盘驱动器的列表以及正确答案应该是什么.

我有一些MVP模式的问题,特别是在哪里创建我所有类的实例.目前这些都是在program.cs文件中创建的.虽然这有效,但我知道这是糟糕的设计.我很感激,如果有人能给我一些关于如何构建它的指示.
internal static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
private static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
var browser = new BrowserWindow();
var helper = new MainPresenterHelper();
var userInterface = new MainForm();
var entity = new UserInputEntity();
var readerWriter = new ReaderWriter();
var manager = new IOManager(readerWriter);
var verif = new VerificationManager(manager);
var entityVerification = new EntityVerification(verif);
var logger = new Logger(entity, readerWriter, true);
var verifyRow = new VerifyRow(entity, logger);
var …Run Code Online (Sandbox Code Playgroud) 如果我有一个包含4个long []的列表,是否可以为每个long []分配一个线程并修改它?没有线程在技术上试图修改另一个线程应该访问的数据.
long[] array1 = new long[4]{1,2,3,4};
long[] array2 = new long[4]{2,4,5,6};
long[] array3 = new long[4]{3,4,8,9};
long[] array4 = new long[4]{4,5,8,10};
List<long[]> myList = new List<long[]>();
myList.Add(array1);
myList.Add(array2);
myList.Add(array3);
myList.Add(array4);
Run Code Online (Sandbox Code Playgroud)
然后使用任务工厂,获取线程1将array1中的每个元素乘以1.线程2将线程2中的每个元素乘以2,等等.所以最终的配置将是
1,2,3,4
4,8,10,12
9,12,24,27
16,20,32,40
Run Code Online (Sandbox Code Playgroud) 早上,
关于以下引用,这个限制是否与有多少列无关?(我假设不是,但它没有在任何地方明确说明.)如果它与列数相关联,你如何计算你没有超过这个限制?
要向DataTable添加行,必须首先使用NewRow方法返回新的DataRow对象.NewRow方法返回一个包含DataTable模式的行,因为它由表的DataColumnCollection定义.DataTable可以存储的最大行数是16,777,216.有关更多信息,请参阅向DataTable添加数据.
谢谢你的帮助.
我有以下财产:
public string InstanceName
{
get
{
return cbServerInstanceName.Text;
}
}
Run Code Online (Sandbox Code Playgroud)
输入的地方
cbServerInstanceName.Text = "ServerName\ PcName"
Run Code Online (Sandbox Code Playgroud)
这显示为
"ServerName\\ PcName"
Run Code Online (Sandbox Code Playgroud)
我尝试使用string.replace但无法使其工作.
有任何想法吗?
我有大量的数据需要排序,数百万个数组,每个数组有数万个值.我想知道以下内容:
最好是在GPU上实现并行排序算法,并在所有阵列上运行它
要么
实现单线程算法,如quicksort,并为GPU的每个线程分配一个不同的数组.
显然速度是最重要的因素.对于单线程排序算法,内存是一个限制因素.我已经尝试过实现一个递归的快速排序,但它似乎不适用于大量的数据,所以我假设存在内存问题.
要排序的数据类型很长,所以我不相信基数排序是可能的,因为它的数字的二进制表示将太长.
任何指针将不胜感激.
我想尝试在现有的TimeSpan对象上添加1分钟.我想避免声明一个新的TimeSpan对象,并认为以下代码可以工作:
ts3.Add(TimeSpan.FromMinutes(1));
Run Code Online (Sandbox Code Playgroud)
MSDN信息将TimeSpan.Add方法签名声明为:
public TimeSpan Add(TimeSpan ts)
Run Code Online (Sandbox Code Playgroud)
和TimeSpan.FromMinutes方法为:
public static TimeSpan FromMinutes(double value)
Run Code Online (Sandbox Code Playgroud)
添加需要一个TimeSpan对象,而FromMinutes返回一个TimeSpan对象,所以我不明白为什么我不能同时使用它们,如第一个代码块中所述.
如果有人能指出我哪里出错了,我会很感激.
谢谢.
您打算如何从 Presenter 中调用 View(即 MainForm 部分类)中的方法。我是否必须将它添加到 View 实现的接口中,哪个是 DI 到 Presenter 中的?
如果没有,首选的方法是什么?
将所有这些方法添加到界面似乎有点奇怪,这样我就可以在视图中执行 UI 方法。
c# ×8
c#-4.0 ×7
cuda ×3
cudafy.net ×3
winforms ×3
mvp ×2
moq ×1
sorting ×1
sql ×1
sql-server ×1
timespan ×1
unit-testing ×1