我有一个req,我必须创建一个工作线程,并在我的应用程序生命周期内保持它活着,以执行一些背景任务.那么有什么办法可以在我的应用程序需要时将任务堆叠到这个工作线程.
我通常会尝试将所有相关实体保存在同一个存储库中.以下是两者之间具有关系的实体(标有缩进):
因此,进入用户存储库是有意义的.但是,用户通常会链接到许多不同的实体,您将在以下示例中执行哪些操作?
用户
订购
订单与产品和用户都有关系,但您不会将所有4个实体的功能放在同一个存储库中.当您处理用户实体并收集订单信息时,您会怎么做?您可能需要有关产品的额外信息,并且ORM通常会提供延迟加载的功能.但是,如果您的产品实体位于用户实体的单独存储库中,那么这肯定会导致存储库之间发生冲突吗?
.net c# design-patterns domain-driven-design repository-design
我今晚花了很多时间阅读实现基于事件的异步模式
不幸的是,我还没有找到任何关于只支持一个Async调用的类的文章.
我见过的每个例子都假定一个方法调用将被多次调用,因此,应该将一个userState对象传递给MethodName Async
您将看到MS在本文的第三个要点中提到了这一点 http://msdn.microsoft.com/en-us/library/ms228974(VS.80).aspx在"同时执行操作"标题下.
但我很困惑.我是否应该使用AsyncOperation和AsyncOperationManager类来实现异步功能,其中一个方法一次只能调用一个方法?
链接也不错:)
谢谢
我试着写一些东西让我的图像正确显示.我有2个号码"breedtePlaatje"和"hoogtePlaatje".当我加载那些带有值的2个变量时,我得到"800"和"500",我希望"verH"为(500/800)= 0,625.那个verH = 0的值.
这是代码:
int breedtePlaatje = Convert.ToInt32(imagefield.Width);
int hoogtePlaatje = Convert.ToInt32(imagefield.Height);
//Uitgaan van breedte plaatje
if (breedtePlaatje > hoogtePlaatje)
{
double verH = (hoogtePlaatje/breedtePlaatje);
int vHeight = Convert.ToInt32(verH * 239);
mOptsMedium.Height = vHeight;
mOptsMedium.Width = 239;
//Hij wordt te klein en je krijgt randen te zien, dus plaatje zelf instellen
if (hoogtePlaatje < 179)
{
mOptsMedium.Height = 179;
mOptsMedium.Width = 239;
}
}
Run Code Online (Sandbox Code Playgroud)
关于我的方法的任何提示都很可爱.
我正在尝试将文件夹中的bmp文件转换为jpg,然后删除旧文件.代码工作正常,但它无法删除bmp.
DirectoryInfo di = new DirectoryInfo(args[0]);
FileInfo[] files = di.GetFiles("*.bmp");
foreach (FileInfo file in files)
{
string newFile = file.FullName.Replace("bmp", "jpg");
Bitmap bm = (Bitmap)Image.FromFile(file.FullName);
bm.Save(newFile, ImageFormat.Jpeg);
}
for (int i = 0; i < files.Length; i++)
files[i].Delete();
Run Code Online (Sandbox Code Playgroud)
这些文件没有被错误指示的其他程序/进程使用,所以我假设问题在这里.但对我来说,代码看起来很好,因为我按顺序执行所有操作.这也是程序的全部内容,因此错误不会由其他地方的代码引起.
我一直在C#中创建这个登录表单,我想在用户点击提交或按下回车键后立即"提交"所有数据.
我一直在用KeyEvents测试一下,但迄今为止没有任何工作.
void tbPassword_KeyPress(object sender, KeyPressEventArgs e)
{
MessageBox.Show(e.KeyChar.ToString());
}
Run Code Online (Sandbox Code Playgroud)
上面的代码是为了测试事件是否在第一时间起作用.它工作得很完美,当我按下'd'它显示我'd'当我按'8'时它显示'8'但按下输入没有做任何事情.
所以我虽然这是因为输入并没有真正绑定到一个角色,但它确实显示了退格,它工作得很好,所以让我很困惑为什么它没有注册我的回车键.
所以问题是: 如何记录输入/返回键?为什么它不能正确记录按键现在就像它应该的那样?
注意:我把事件放在文本框中
tbPassword.KeyPress += new KeyPressEventHandler(tbPassword_KeyPress);
Run Code Online (Sandbox Code Playgroud)
因此,当按下输入按钮时,它会触发,而选择文本框(当然是整个时间)可能与执行代码有关.
所以我有一个叫做的课User.它有一个internal构造函数.我想创建一个User对象,所以我可以像这样模拟它:
public ISessionManagerInstance MockedSessionManager()
{
var manager = new Mock<ISessionManagerInstance>();
var company = new Chatham.Web.Business.Classes.Company(500, "", "", Enumerations.WebRelationshipInfo.NotSet, "", 0, 0, Data.Login.TeamOwnership.NotSet, 0, 0, false, null, false);
manager.Setup(p => p.Company).Returns(company);
Chatham.Web.Business.Classes.User displayUser = typeof(Chatham.Web.Business.Classes.User);
displayUser.EntityID = 1786;
manager.Setup(p => p.DisplayUser).Returns(displayUser);
return manager.Object;
}
Run Code Online (Sandbox Code Playgroud)
现在,Company有一个构造函数,这很容易.但User有一个只是内部的.有什么办法我可以创建一个User并int在其上设置一个属性,以便我可以将该对象传回模拟器上吗?
第一次在这里发布,但我已经阅读了几年的网站。我正在尝试在C#中实现一个简单的通用类型Octree(使用一些XNA包含项)。我已经进行了深入的研究,并且理解了这个概念,但似乎无法使其实用。到处搜索会产生其他语言的一些实现,但是它们似乎都是针对特定应用定制的。而且我还真的无法从这些事情中获得多大意义。
下面是到目前为止的Octree类,Vector3,BoundingBox和ContainmentType来自XNA。我输入最大和最小点,以及边界内的点列表。但是,实际上没有任何点添加到树中。任何帮助将非常感激!
public class Octree<T> : ISerializable
{
Vector3 max;
Vector3 min;
OctreeNode head;
public Octree(Vector3 min, Vector3 max, List<Vector3> values)
{
this.max = max;
this.min = min;
head = new OctreeNode( min, max, values);
}
public Octree() { }
public Octree(SerializationInfo info, StreamingContext context)
{
}
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
}
internal class OctreeNode
{
Vector3 max;
Vector3 min;
Vector3 center;
public Vector3 position;
public T data;
public BoundingBox nodeBox;
public List<OctreeNode> subNodes;
public OctreeNode( Vector3 …Run Code Online (Sandbox Code Playgroud) 我有两个清单:
List<comparerobj> list_c = new List<comparerobj>();
List<comparerobj> list_b = new List<comparerobj>();
Run Code Online (Sandbox Code Playgroud)
我正以某种方式填写清单
然后我试图在list_b中找到list_c不包含的元素:
foreach (comparerobj b in list_b)
{
bool lc = !list_c.Contains(b);
if (lc != true)
{
data.Add(b);
}
}
Run Code Online (Sandbox Code Playgroud)
但是对于任何b我都得到那个lc = true.我究竟做错了什么?
我想直接访问另一个表单上文本框内的文本,所以我在表单中添加了一个公共变量_txt并添加了一个如下事件:
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
_txt = richTextBox1.Text;
}
Run Code Online (Sandbox Code Playgroud)
但表单加载如下:
public FrmTextChild(string text)
{
InitializeComponent();
_txt = text;
richTextBox1.Text = _txt;
Text = "Untitled.txt";
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法直接链接这两个?